63

我希望能够遍历矩阵以将函数应用于每一行。我怎样才能为 Numpy 矩阵做到这一点?

4

3 回答 3

81

您可以使用numpy.apply_along_axis(). 假设您的数组是二维的,您可以像这样使用它:

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]
于 2013-05-09T18:57:54.013 回答
65

虽然您当然应该提供更多信息,但如果您尝试遍历每一行,则可以使用 for 循环进行迭代:

import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
  print str(row)
于 2013-05-09T18:58:25.383 回答
7

如果您想尝试使用多进程来处理 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 接受一个函数和一个可迭代对象。
我使用“map”函数在数组的每一行上创建一个迭代器。
也许有更好的方法来创建可迭代的。

于 2018-01-07T12:12:36.077 回答