ce n'numpy.apply_along_axis effectuer exactement?
Je suis venu à travers la numpy.apply_along_axis fonction du code. Et je ne comprends pas la documentation à ce sujet.
Ceci est un exemple de la documentation:
>>> def new_func(a):
... """Divide elements of a by 2."""
... return a * 0.5
>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> np.apply_along_axis(new_func, 0, b)
array([[ 0.5, 1. , 1.5],
[ 2. , 2.5, 3. ],
[ 3.5, 4. , 4.5]])
Aussi loin que je pensais que j'ai compris la documentation, je me serais attendu:
array([[ 0.5, 1. , 1.5],
[ 4 , 5 , 6 ],
[ 7 , 8 , 9 ]])
c'est à dire ayant appliqué le long de l'axe [1,2,3] qui est de l'axe 0 dans [[1,2,3], [4,5,6], [7,8,9]]
Évidemment, je suis dans l'erreur. Pourriez-vous me corriger ?
Vous devez vous connecter pour publier un commentaire.
apply_along_axis
applique la fonction fournie le long 1D tranches du tableau d'entrée, avec les tranches prises le long de l'axe que vous spécifiez. Donc dans votre exemple,new_func
est appliqué sur chaque tranche de la matrice le long du premier axe. Il devient plus clair si vous utilisez un vecteur fonction de valeurs, plutôt que d'un scalaire, comme ceci:Ici,
numpy.diff
est appliquée le long de chaque tranche, soit du premier ou du deuxième axe (dimension) du tableau d'entrée.La fonction est exécutée sur des tableaux 1d le long de l'axe=0. Vous pouvez spécifier un autre axe à l'aide de "l'axe" de l'argument. L'utilisation de ce paradigme est:
La fonction a été effectuée sur chaque subarray le long de dimension 0. Donc, il est destiné pour les 1-D et renvoie un tableau 1D pour chaque 1-D entrée.
Un autre exemple est :
Fournit un scalaire de sortie pour un 1-D de la matrice.
Bien sûr, vous pourriez définir le paramètre axe dans cumsum ou somme pour faire la-dessus, mais le point ici est qu'il peut être utilisé pour tout 1-D de la fonction que vous écrivez.