J'ai une fonction foo
qui prend un tableau NMPM en tant qu'argument et renvoie une valeur scalaire. J'ai un tableau de numpy de AxNxM data
, sur lequel je voudrais carte foo
pour me donner un tableau numpy résultante de longueur A.Fonctions de mappage de matrices numpy 2D
Curently, je fais ceci:
result = numpy.array([foo(x) for x in data])
Il fonctionne, mais il semble que je ne profite pas de la magie (et de la vitesse). Y a-t-il un meilleur moyen?
J'ai regardé numpy.vectorize
, et numpy.apply_along_axis
, mais aucun ne fonctionne pour une fonction de tableaux 2D.
EDIT: Je fais une régression boostée sur les correctifs d'image 24x24, donc mon AxNxM est quelque chose comme 1000x24x24. Ce que j'ai appelé foo
ci-dessus applique une fonctionnalité de type Haar à un patch (donc, pas terriblement intensif en calcul).
Il pourrait y avoir un moyen de recoder 'foo' afin qu'il puisse accepter un tableau numpy de dimension arbitraire, l'application de ses calculs aux deux derniers axes. Mais nous devrions voir comment 'foo' est codé pour faire des suggestions spécifiques. – unutbu
J'ai ajouté plus de détails sur mon problème spécifique. Serait-il logique de laisser «data» tel quel, de recoder 'foo' pour prendre un paramètre d'index, puis de le vectoriser et de le mapper sur un' arange (len (x)) '? – perimosocordiae