首页 > 解决方案 > 如果我想在遍历数组时比较数组中的元素怎么办

问题描述

我想在遍历数组时比较元素。

这是编译器所说的:

ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

我知道如何.any()并且all()用于检查元素是否在数组中,并且它们返回trueor false。但我不知道如何修改这段代码:

a = np.arange(11, 36)
a = a.reshape(5, 5)
for ele in a:
  if ele >= 20:
     print(ele)

标签: pythonarrays

解决方案


你正在重塑你的 numpy 数组。

a = np.arange(11, 36)

print(a)
[11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
 35]
a = a.reshape(5, 5)
print(a)
[[11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]
 [26 27 28 29 30]
 [31 32 33 34 35]]

arange 给出一维数组。调用 reshape(5,5) 会为您提供一个二维 numpy 数组,因此在 'a' 上循环每次都会为您提供一个数组。你可以通过循环两次来做到这一点

for row in a:
    for ele in row:
        if ele >= 20:
            print(ele)

您可以注意到,如果您不调用 reshape,那么您的原始循环将正常工作。


推荐阅读