Itérer sur des lignes de matrice Numpy pour appliquer une fonction chacune?
Je veux pouvoir itérer sur la matrice pour appliquer une fonction à chaque ligne. Comment puis-je le faire pour une matrice Numpy ?
31
                
            
                demandé sur
                erogol
                2013-05-09 22:34:44
            
        3 réponses
Utilisez numpy.apply_along_axis(). En supposant que votre matrice est 2D, vous pouvez utiliser comme: 
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]
45
	                    
	                
	                    répondu
	                    Saullo G. P. Castro
	                    2013-05-09 18:57:54
	                
	            Alors que vous devriez 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)
38
	                    
	                
	                    répondu
	                    matthew-parlette
	                    2015-08-26 09:14:15
	                
	            Voici ma prise si vous voulez essayer d'utiliser multiprocesses pour traiter chaque ligne de tableau numpy,
from multiprocessing import Pool
import numpy as np
def my_function(x):
    pass     # do something and return something
if __name__ == '__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()
Piscine.carte prendre dans une fonction et un itérable.
J'ai utilisé la fonction 'map' pour créer un itérateur sur chaque ligne du tableau.
Peut-être qu'il y a un meilleur pour créer l'itérable cependant.
2
	                    
	                
	                    répondu
	                    hamster ham
	                    2018-01-08 01:22:56