>>> def dobule(x):
... print(x)
... return x * 2
...
>>> A = np.arange(6).reshape((3,2))
>>> A
array([[0, 1],
[2, 3],
[4, 5]])
Considérez comment appliquer votre propre fonction dans des lignes ou des colonnes de «A».
>>> np.array([double(a) for a in A])
[0 1]
[2 3]
[4 5]
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
Ceci peut être réalisé en utilisant la notation d'inclusion de liste comme ci-dessus, Je veux penser à un moyen d'éviter d'utiliser l'instruction for.
numpy.vectorize
https://docs.scipy.org/doc/numpy/reference/generated/numpy.vectorize.html
>>> import numpy as np
>>> np.vectorize(double)(A)
0
0
1
2
3
4
5
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
(Pourquoi est-il imprimé 7 fois alors que le nombre d'éléments est de 6?)
Avec numpy.vectorize
, la fonction sera appliquée élément par élément,
Il ne peut pas être appliqué sur une ligne ou une colonne.
numpy.apply_along_axis
https://docs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html
>>> np.apply_along_axis(double, 0, A)
[0 2 4]
[1 3 5]
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
>>> np.apply_along_axis(double, 1, A)
[0 1]
[2 3]
[4 5]
array([[ 0, 2],
[ 4, 6],
[ 8, 10]])
Vous pouvez utiliser numpy.apply_along_axis
pour appliquer une fonction sur une base de ligne ou de colonne.
Recommended Posts