【问题标题】:Placing a condition while calculating using numpy array在使用 numpy 数组计算时放置条件
【发布时间】:2013-08-23 16:16:12
【问题描述】:

下面是一小段代码,由于某种原因不断生成以下值错误消息: 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.anyp.all,仍然收到相同的错误消息。有什么建议么?谢谢。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 或者,完全按照错误消息的建议进行操作:while (p + q == 7).any():
    • 对我来说,这个函数比本例中的方法更接近英文(“while all elements equal to 7”)。
    • 我主要是想提示错误消息的含义。
    • 大家好,感谢您的建议。我实际上使用了 (p + q==7).any(),但是我把它放在了 try 和 except 语句中。
    • 另一句话:错误为您提供了一个行号(如果您的代码完全相同,则为第 5 行),但您向下查看了 2 行。下次请仔细阅读错误消息,它们会提供有关问题的准确指示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2021-03-03
    • 2021-09-28
    • 2021-11-12
    • 2014-09-21
    • 2020-11-27
    相关资源
    最近更新 更多