3

下面是一小段代码,由于某种原因不断生成以下值错误消息: ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。

import numpy as np
p=np.array([1,2,3])
q=np.array([4,5,5])

while p + q==7:
        try:
            assert p.any()
            assert q.any()
        except AssertionError:
            print('(p + q)<=6')
        print  (p + q)

p.any和都试过了p.all,还是一样的错误信息。有什么建议么?谢谢。

4

1 回答 1

4

你的问题是每个p都有q三个元素,所以p + q == 7也会有三个元素。对于 while 循环,您需要一些可以解释为 True 或 False 的东西 - 错误告诉您,如果没有更多信息,三个元素不能解释为 True 或 False:它是模棱两可的。如果您希望所有元素都等于 7,请使用

while np.all(p + q == 7):

如果您希望其中任何一个相等,请使用

while np.any(p + q == 7):
于 2013-08-23T08:16:12.103 回答