Il existe différentes méthodes pour utiliser numpy et appliquer une fonction aux valeurs d'une colonne d'un tableau numpy Exemples :
Appliquez une fonction personnalisée à une matrice numpy 2d
Nous avons un tableau appelé ici data.
import numpy as npdata = np.arange(30).reshape((10,3))print(data)
donne
[[ 0 1 2][ 3 4 5][ 6 7 8][ 9 10 11][12 13 14][15 16 17][18 19 20][21 22 23][24 25 26][27 28 29]]
et nous devons appliquer une fonction personnalisée, par exemple.
def myFunc(X):slope = 2.0intercept = -4.0return slope * X + intercept
plus précisément à la deuxième colonne. Pour ce faire, une solution consiste à découper le tableau en utilisant data[:,1] et à appliquer notre fonction :
myFunc(data[:,1])
donne
array([-2., 4., 10., 16., 22., 28., 34., 40., 46., 52.])
Pour modifier directement le tableau de données :
data[:,1] = myFunc(data[:,1])
donne
[[ 0 -2 2][ 3 4 5][ 6 10 8][ 9 16 11][12 22 14][15 28 17][18 34 20][21 40 23][24 46 26][27 52 29]]
Utilisation de la fonction numpy apply_along_axis()
Une autre solution consiste à utiliser la méthode numpy.apply_along_axis(), qui prend trois paramètres:
(1) Une fonction définie par l'utilisateur,
(2) Un indice d'axe (0 pour les lignes et 1 pour les colonnes),
(3) Et le tableau sur lequel la fonction doit être appliquée.
La méthode renvoie un nouveau tableau, après avoir appliqué la fonction spécifiée à tous les éléments du tableau en fonction de l'indice d'axe donné.
np.apply_along_axis(myFunc,1,data)
donne
array([[-4., -2., 0.],[ 2., 4., 6.],[ 8., 10., 12.],[14., 16., 18.],[20., 22., 24.],[26., 28., 30.],[32., 34., 36.],[38., 40., 42.],[44., 46., 48.],[50., 52., 54.]])
Pour appliquer une fonction à une colonne spécifique, utilisez la même méthode.
np.apply_along_axis(myFunc,0,data[:,1])
donne
array([-2., 4., 10., 16., 22., 28., 34., 40., 46., 52.])
Références
| Liens | Site |
|---|---|
| Array creation | numpy.org |
| numpy.apply_along_axis | numpy.org |
