Iterating over Numpy matrix rows to apply a function each?

前端 未结 3 1425
囚心锁ツ
囚心锁ツ 2020-12-02 09:27

I want to be able to iterate over the matrix to apply a function to each row. How can I do it for a Numpy matrix ?

相关标签:
3条回答
  • 2020-12-02 09:38

    Here's my take if you want to try using multiprocesses to process each row of numpy array,

    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 take in a function and an iterable.
    I used 'map' function to create an iterator over each rows of the array.
    Maybe there's a better to create the iterable though.

    0 讨论(0)
  • 2020-12-02 09:46

    While you should certainly provide more information, if you are trying to go through each row, you can just iterate with a for loop:

    import numpy
    m = numpy.ones((3,5),dtype='int')
    for row in m:
      print str(row)
    
    0 讨论(0)
  • 2020-12-02 09:48

    Use numpy.apply_along_axis(). Assuming your matrix is 2D, you can use like:

    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]
    
    0 讨论(0)
提交回复
热议问题