python iterate - Iterating over Numpy matrix rows per applicare ciascuna una funzione?




loop array (4)

Voglio essere in grado di scorrere sulla matrice per applicare una funzione a ciascuna riga. Come posso farlo per una matrice Numpy?


Answers

Anche se dovresti fornire più informazioni, se stai cercando di passare attraverso ogni riga, puoi semplicemente ripetere con un ciclo for:

import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
  print str(row)

Usa numpy.apply_along_axis() . Supponendo che la tua matrice sia 2D, puoi usare come:

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]

Ecco la mia opinione se si desidera provare a utilizzare multiprocessi per elaborare ogni riga di array 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()

pool.map accetta una funzione e un iterabile.
Ho usato la funzione 'mappa' per creare un iteratore su ogni riga dell'array.
Forse c'è un modo migliore per creare l'iterabile però.


Puoi applicarlo per costruire qualsiasi tipo di array, come gli zeri:

a = range(5)
a = [i*0 for i in a]
print a 
[0, 0, 0, 0, 0]






python matrix numpy