我希望能够迭代矩阵以将函数应用于每一行。我该如何做一个Numpy矩阵?遍历Numpy矩阵行来应用每个函数?
回答
使用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]
如果您使用'numpy'函数,您可以(通常)只指定轴,如:'mymatrix.sum(axis = 1 )'。 – root 2013-05-09 19:03:38
这是正确的,在myfunction sum()只是一个例子,但对于一些情况下,像[这里](http://stackoverflow.com/questions/15094619/fitting-a-3d-array-of-data-to -a-1d-function-with-numpy-or-scipy/16315330#16315330),'np.apply_along_axis()'可能非常有用 – 2013-05-09 19:06:24
可以,是的 - 不知道函数会使问题变得模糊不清。 – root 2013-05-09 19:11:05
虽然你当然应该提供更多的信息,如果你试图去的每一行,你可以只用一个重复的循环:
import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
print str(row)
这不是一个低效的实现吗? – Lokesh 2017-03-28 17:59:29
这里是我拿,如果你想使用multiprocesses处理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'函数在数组的每一行上创建一个迭代器。
也许有更好的创建迭代。
- 1. 在numpy中遍历矩阵
- 2. 使用函数循环遍历矩阵
- 3. 在Python中高效地遍历numpy矩阵中的每一列
- 4. 遍历numpy的阵列
- 5. 向量化numpy索引并应用函数来构建矩阵
- 6. 如何使用迭代遍历行和列来填充矩阵
- 7. 遍历在矩阵倍频
- 8. 遍历矩阵的方法
- 9. 遍历矩阵蟒蛇Python
- 10. Elixir循环遍历矩阵
- 11. MatLab - 对矩阵中的每一行应用一个函数
- 12. 将索引函数应用于矩阵行中的每个值
- 13. NumPy:应用将矩阵返回矩阵的每一行的函数的一般向量化方法
- 14. 遍历每行
- 15. Numpy 3D阵列矩阵乘法函数
- 16. numpy矩阵每秒更新
- 17. 将函数应用于矩阵或数据帧的每一行
- 18. 如何使用theano中的scan函数遍历theano矩阵的行?
- 19. 使用矩阵的每一行中的元素应用函数
- 20. 遍历每个名字在阵列
- 21. 遍历稀疏矩阵并连接每行的数据和索引
- 22. numpy遍历多维数组
- 23. TensorFlow将函数应用于矩阵变量的每一行
- 24. 使用另一个矩阵对NumPy矩阵进行子集
- 25. 循环遍历numpy数组中的每个项目?
- 26. 在Matlab中对矩阵的每个元素应用函数
- 27. 将传递函数应用于矩阵的每个元素
- 28. 在矩阵的每个元素上应用函数
- 29. 如何将函数应用于numpy矩阵的所有列?
- 30. Python Numpy将旋转矩阵应用于阵列中的每一行
如果你解释你正在努力达到什么样的功能或应用什么样的功能,很可能会得到更有帮助的答案。此外,你可能想看看:http://stackoverflow.com/questions/8079061/function-application-over-numpys-matrix-row-column – root 2013-05-09 18:42:39
请发布您的代码。如果您还没有尝试过,请尝试一些东西,并发布您遇到的问题 – 2013-05-09 18:49:06