有人问我这个问题,我不确定为什么我的代码出错。
问题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()
非常感谢您的帮助
答案 0 :(得分:0)
我认为这是因为您的yearly_growth_rate
是一个数组,而不是int
。 numpy.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
的最后一个参数是步骤,应该为数字。将数组作为参数传递毫无意义。