Ok, więc po przejściu przez tutoriali na strukturyzowanych tablic numpy za Jestem w stanie stworzyć kilka prostych przykładów:Brak operatorów binarnych dla strukturowanych tablic w Numpy?
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)
(My przeznaczone przypadek użycia miałby więcej niż trzy pozycje i będzie używać bardzo długich 1D tablic.) Więc wszystko idzie dobrze, dopóki nie spróbujemy wykonać podstawowej matematyki. I pojawiają się błędy dla wszystkich z następujących czynności:
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
Najwyraźniej prostych operatorów (+, -, *, /) nie są obsługiwane nawet dla najprostszych strukturyzowanych tablic. Czy może czegoś brakuje? Czy powinienem spojrzeć na jakąś inną paczkę (i nie powiedzieć Pand, bo to totalna przesada)? To wydaje się być oczywistą możliwością, więc jestem nieco zaskoczony. Ale trudno jest o tym mówić w Internecie. Czy to nie ogranicza znacząco przydatności uporządkowanych tablic? Dlaczego ktokolwiek użyłby tablicy struktur, a nie tablic upakowanych w dyktando? Czy istnieje techniczny powód, dla którego może to być trudne? Lub, jeśli właściwym rozwiązaniem jest wykonanie żmudnej pracy z przeciążeniem, to jak to zrobić, zachowując szybkie operacje?
Doceniam twoją odpowiedź. To bardzo pomaga wyjaśnić sytuację. Wydaje się, że u podstaw tej sytuacji zdezorientowani programiści mieli jeden przypadek użycia dla uporządkowanych tablic, a mój przypadek użycia nie jest zgodny. C'est la vie. – user2789194