Keine binären Operatoren für strukturierte Arrays in Numpy?
Okay, nachdem ich die Tutorials zu Numpys strukturierten Arrays durchgesehen habe, kann ich einige einfache Beispiele erstellen:
from numpy import array, ones
names=['scalar', '1d-array', '2d-array']
formats=['float64', '(3,)float64', '(2,2)float64']
my_dtype = dict(names=names, formats=formats)
struct_array1 = ones(1, dtype=my_dtype)
struct_array2 = array([(42., [0., 1., 2.], [[5., 6.],[4., 3.]])], dtype=my_dtype)
(Mein vorgesehener Anwendungsfall hätte mehr als drei Einträge und würde sehr lange 1d-Arrays verwenden.) Also geht alles gut, bis wir versuchen, eine grundlegende Mathematik durchzuführen. Ich erhalte Fehler für Folgendes:
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
Anscheinend werden einfache Operatoren (+, -, *, /) nicht einmal für die einfachsten strukturierten Arrays unterstützt. Oder vermisse ich etwas? Sollte ich mir ein anderes Paket ansehen (und nicht Pandas sagen, denn das ist total übertrieben)? Dies scheint eine offensichtliche Fähigkeit zu sein, daher bin ich ein wenig verblüfft. Aber es ist schwierig, darüber im Netz zu plaudern. Schränkt dies die Nützlichkeit strukturierter Arrays nicht erheblich ein? Warum sollte jemand ein Strukturarray verwenden, anstatt Arrays, die in ein Diktat gepackt sind? Gibt es einen technischen Grund, warum dies unlösbar sein könnte? Oder, wenn die richtige Lösung darin besteht, die mühsame Arbeit des Überladens auszuführen, wie wird das dann getan, während die Operationen schnell gehalten werden?