【问题标题】:Truth value of an array with more than one element is ambiguous具有多个元素的数组的真值不明确
【发布时间】:2019-03-19 07:35:44
【问题描述】:

我收到了这个问题,但我不确定为什么我的代码会出错。

问题 4。假设 1930 年有 30,000 名海滩游客,而 去海滩的人数年复一年增加了 15%。创建一个数组 称为 beachgoers,其中包含每年的 beachgoers 数量 1930 年至 2017 年之间。如果任何海滩游客同样可能 被鲨鱼袭击,最危险的一年有多危险 鲨鱼袭击?指定被鲨鱼攻击的百分比 到多变的危险。提示:要计算海滩游客,您可能会发现 函数 np.arange 很有帮助。

yearly_growth_rate =  30000 * 1.15 ** np.arange(1, 88) - 30000
final_number = 30000 * (1.15 ** 88)
beachgoers = np.arange(30000, final_number, yearly_growth_rate)
beachgoers
#danger = ...

这是我遇到的错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-57-df37b4a34579> in <module>()
      1 yearly_growth_rate =  30000 * 1.15 ** np.arange(1, 88) - 30000
      2 final_number = 30000 * (1.15 ** 88)
----> 3 beachgoers = np.arange(30000, final_number, yearly_growth_rate)
      4 beachgoers
      5 #danger = ...

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

提前感谢您的帮助

【问题讨论】:

标签: python numpy


【解决方案1】:

我认为这是因为您的yearly_growth_rate 是一个数组,而不是intnumpy.arange() 函数有四个参数:

start = 可选int 类型 stop = 需要停车的地方 step-size = 元素之间的可选大小 (int) dtype = arange 的可选输出类型

查看docs 寻求帮助

【讨论】:

    【解决方案2】:

    np.arange is a number 的第三个参数,您提供了一个数组。 np.arrange 的实现可能使用参数的真值来检查它不是None 或零。

    【讨论】:

      【解决方案3】:

      你只需要

      30000 * (1.15 ** np.arange(0, 88))
      

      这将转化为

      [30000 * (1.15 ** 0),
       30000 * (1.15 ** 1),
       30000 * (1.15 ** 2),
       ...]
      

      np.arange的最后一个参数是步骤,应该是一个数字。将数组作为参数传递是没有意义的。

      【讨论】:

        猜你喜欢
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 2019-08-21
        • 2021-07-06
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多