我希望能夠迭代矩陣以將函數應用於每一行。我該如何做一個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