簡體   English   中英

迭代n行的矩陣行

[英]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

有兩種方式(兩者都基本歸結為相同的邏輯)

方法-1:

使用結果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]

方法2:

使用result.getA()

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM