我希望能够迭代矩阵以将函数应用于每一行。我如何为Numpy矩阵做到这一点?
答案 0 :(得分:55)
使用numpy.apply_along_axis()
。假设您的矩阵是2D,您可以使用:
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]
答案 1 :(得分:50)
虽然您当然应该提供更多信息,但如果您尝试遍历每一行,则可以使用for循环进行迭代:
import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
print str(row)
答案 2 :(得分:4)
如果你想尝试使用多进程来处理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接受一个函数和一个iterable 我使用'map'函数在数组的每一行上创建一个迭代器 也许最好创建可迭代的。