Je veux pouvoir parcourir la matrice pour appliquer une fonction à chaque ligne. Comment puis-je le faire pour une matrice Numpy?
Utilisez numpy.apply_along_axis()
. En supposant que votre matrice soit en 2D, vous pouvez utiliser comme ceci:
import numpy as np
mymatrix = np.matrix([[11,12,13],
[21,22,23],
[31,32,33]])
def myfunction( x ):
return sum(x)
print np.apply_along_axis( myfunction, axis=1, arr=mymatrix )
#[36 66 96]
Bien que vous deviez certainement fournir plus d'informations, si vous essayez de parcourir chaque ligne, vous pouvez simplement itérer avec une boucle for:
import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
print str(row)
Voici ce que je pense si vous voulez utiliser plusieurs processus pour traiter chaque ligne du tableau numpy,
from multiprocessing import Pool
import numpy as np
def my_function(x):
pass # do something and return something
if __== '__main__':
X = np.arange(6).reshape((3,2))
pool = Pool(processes = 4)
results = pool.map(my_function, map(lambda x: x, X))
pool.close()
pool.join()
pool.map prend en une fonction et un iterable.
J'ai utilisé la fonction 'map' pour créer un itérateur sur chaque ligne du tableau.
Il y a peut-être un meilleur moyen de créer l'itérable, cependant.