[英]Iterate over a numpy Matrix rows
首先,我試圖找到我的問題的答案(我認為這是非常基本的)在谷歌和網站上搜索,但沒有出現。
我試圖從一個numpy矩陣中獲取行,但我不能。 例如,如果我使用這個:
result = numpy.matrix([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
for p in result:
print(p[0])
打印這個:
[[11 12 13]]
[[21 22 23]]
[[31 32 33]]
如果我只用p
那就一樣
訪問每一行我需要做什么? numpy.nditer(result)
打印一個數組,我需要每一行來執行一些操作。
問題是你正在使用np.matrix
。 改為使用np.array
並簡單地迭代而不進行索引:
result = np.array([[11, 12, 13],
[21, 22, 23],
[31, 32, 33]])
for p in result:
print(p)
[11 12 13]
[21 22 23]
[31 32 33]
說明
你看到的是numpy.matrix
的效果,要求每一行有2個維度。 這對於NumPy來說是不必要的和反模式的。
numpy.matrix
背后有一段歷史。 為了方便矩陣乘法運算符,它被初始化使用。 但這不再是一個問題,因為@
是可能的(Python 3.5+)而不是嵌套dot
調用。 因此,默認情況下,使用numpy.array
。
有兩種方式(兩者都基本歸結為相同的邏輯)
使用結果result.A
將self
作為ndarray
對象返回。
相當於np.asarray(self)
。
In [16]: for row in result.A:
...: print(row)
...:
[11 12 13]
[21 22 23]
[31 32 33]
將self
作為ndarray
對象返回。
相當於np.asarray(self)
。
In [17]: for row in result.getA():
...: print(row)
...:
[11 12 13]
[21 22 23]
[31 32 33]
請嘗試以下方法:
for p in result:
print(numpy.array(p)[0])
這numpy.ndarray
每行作為numpy.ndarray
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.