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