![](/img/trans.png)
[英]Python error: ValueError: can only convert an array of size 1 to a Python scalar
[英]Error: can only convert an array of size 1 to a Python scalar
我有这个代码:
min_fit=np.min(fitness_viz)
viz_min_fit=np.where(fitness_viz==min_fit)
index=np.asscalar(viz_min_fit[0])
tabu_list[0][1]=pair_ejec_cell_area[index][1]
目标是在数组(fitness_viz 数组)中找到最小值,然后找到最小值的索引(代码的第二行)。 viz_min_fit 是一个数组,其中所有的索引都匹配fitness_viz 中的最小值。 然后,目标是使用其中一个索引作为pair_ejec_cell_area 中的索引。 当我运行它时,我收到一条错误消息,说“只能将大小为 1 的数组转换为 Python 标量”,我不明白。
有人可以帮助我吗? 谢谢!
您的索引列表可能大于一个,因此 asscalar 无法选择将哪个值转换为标量。
>>> fitness_viz = [1, 1, 2, 3, 5]
>>> min_fit=np.min(fitness_viz)
>>> viz_min_fit=np.where(fitness_viz==min_fit)
>>> len(viz_min_fit[0])
2
所以一个解决方案是获取第一个索引:
>>> index=np.asscalar(viz_min_fit[0][:1])
请注意,自 1.16 版以来不推荐使用 asscalar,您可以改用 numpy.ndarray.item() 。
完整的解决方案是:
>>> fitness_viz = [1, 1, 2, 3, 5]
>>> min_fit=np.min(fitness_viz)
>>> viz_min_fit=np.where(fitness_viz==min_fit)
>>> index=np.ndarray.item(viz_min_fit[0][:1]))
>>> tabu_list[0][1]=pair_ejec_cell_area[index][1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.