Нет двоичных операторов для структурированных массивов в Numpy?
Итак, пройдя учебники по структурированным массивам 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)
(Мой предполагаемый вариант использования будет содержать более трех записей и будет использовать очень длинные 1d-массивы.) Итак, все идет хорошо, пока мы не попытаемся выполнить некоторую базовую математику. Я получаю ошибки для всего следующего:
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
По-видимому, простые операторы (+, -, *, /) не поддерживаются даже для простейших структурированных массивов. Или я что-то упустил? Должен ли я смотреть на какой-то другой пакет (и не говорите «Панды», потому что это полный перебор для этого)? Это кажется очевидной возможностью, поэтому я немного ошеломлен. Но трудно найти какую-либо болтовню об этом в сети. Не сильно ли это ограничивает полезность структурированных массивов? Зачем кому-то использовать структурный массив, а не массивы, упакованные в dict? Есть ли техническая причина, почему это может быть неразрешимым? Или, если правильное решение состоит в том, чтобы выполнить тяжелую работу по перегрузке, то как это сделать при сохранении быстрых операций?