簡體   English   中英

錯誤:只能將大小為 1 的數組轉換為 Python 標量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM