具有多个元素的数组的真值不明确

时间:2018-10-14 21:15:38

标签: python numpy

有人问我这个问题,我不确定为什么我的代码出错。

  

问题4.假设1930年有30,000名去海滩的人,   上海滩的游客数量同比增长了15%。创建一个数组   包含每年的游民人数的被称为游民   在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()

非常感谢您的帮助

3 个答案:

答案 0 :(得分:0)

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

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

检查docs以获得帮助

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您只需要

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

将翻译为

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

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