为什么下面的代码不起作用?
import numpy
grid = numpy.matrix([[1,0,1,1],[1,1,0,0],[1,0,1,0],[0,0,0,1]])
i = 0
for line in grid:
for block in line:
if block == 1:
i += 1
print("Grid has " + str(i) + " times number 1")
我认为它会首先循环遍历每一行,然后循环该行的每个元素并将其与 1 进行比较,但我收到此错误:
Traceback (most recent call last):
File "python", line 7, in <module>
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
最佳答案
迭代 numpy.matrix
矩阵会生成 1 行 numpy.matrix
矩阵,每一行一个。
迭代 1 行 numpy.matrix
矩阵会生成 1 行 numpy.matrix
矩阵,而不是单个单元格。
不要使用numpy.matrix
。这根本不值得。另外,如果可以的话,根本不要循环 NumPy 对象:
grid = numpy.array([[1,0,1,1],[1,1,0,0],[1,0,1,0],[0,0,0,1]])
i = grid.sum()
关于python - 循环遍历 numpy 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47780180/