Tengo una función foo
que toma una matriz NxM numpy como argumento y devuelve un valor escalar. Tengo una matriz AxNxM numpy data
, sobre la que me gustaría mapa foo
darme una matriz numpy resultante de la longitud A.Funciones de mapeo de matrices numpy 2D
Curently, estoy haciendo esto:
result = numpy.array([foo(x) for x in data])
Funciona, pero parece que no estoy aprovechando la magia numpy (y la velocidad). ¿Hay una mejor manera?
Miré numpy.vectorize
, y numpy.apply_along_axis
, pero ninguno funciona para una función de matrices 2D.
EDITAR: Estoy haciendo la regresión aumentada en parches de imagen 24x24, por lo que mi AxNxM es algo así como 1000x24x24. Lo que llamé foo
de arriba aplica una característica similar a Haar a un parche (por lo tanto, no es terriblemente intensivo computacionalmente).
Puede haber una manera de recodificar 'foo' para que pueda aceptar una matriz numpy de dimensión arbitraria, la aplicación de sus cálculos a los dos últimos ejes. Pero tendríamos que ver cómo 'foo' está codificado para hacer sugerencias específicas. – unutbu
He agregado más detalles sobre mi problema específico. ¿Tendría sentido dejar 'data' como está, volver a codificar' foo' para tomar un parámetro de índice, y luego vectorizarlo y asignarlo sobre un 'arange (len (x))'? – perimosocordiae