¿No hay operadores binarios para matrices estructuradas en Numpy?
De acuerdo, entonces, después de leer los tutoriales sobre las matrices estructuradas de numpy, puedo crear algunos ejemplos simples:
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)
(Mi caso de uso previsto tendría más de tres entradas y usaría matrices 1d muy largas). Entonces, todo va bien hasta que intentemos realizar algunas matemáticas básicas. Recibo errores por todo lo siguiente:
struct_array1 + struct_array2
struct_array1 * struct_array2
1.0 + struct_array1
2.0 * struct_array2
Aparentemente, los operadores simples (+, -, *, /) no son compatibles incluso con las matrices estructuradas más simples. ¿O me estoy perdiendo algo? ¿Debería mirar algún otro paquete (y no decir Pandas, porque es una exageración total para esto)? Esto parece una capacidad obvia, así que estoy un poco atónito. Pero es difícil encontrar alguna charla sobre esto en la red. ¿No limita esto severamente la utilidad de las matrices estructuradas? ¿Por qué alguien usaría una matriz de estructura en lugar de matrices empaquetadas en un dict? ¿Hay alguna razón técnica por la que esto sea intratable? O, si la solución correcta es realizar el arduo trabajo de sobrecarga, ¿cómo se hace eso mientras se mantienen las operaciones rápidas?