Python ValueError:尝试获取空序列的argmin,但矩阵不为空
我花了两天时间试图解决这个问题,但没有任何改进。 我有以下代码:Python ValueError:尝试获取空序列的argmin,但矩阵不为空,python,numpy,Python,Numpy,我花了两天时间试图解决这个问题,但没有任何改进。 我有以下代码: if qtd > qtd_individuos: distancia_mutidao = crowding_distance(fitness) print("Distância de mutidão: \n{} População: \n{} Fitness: \n{}".format(distancia_mutidao, pop, fitness))
if qtd > qtd_individuos:
distancia_mutidao = crowding_distance(fitness)
print("Distância de mutidão: \n{} População: \n{} Fitness: \n{}".format(distancia_mutidao, pop, fitness))
while (len(pop) > qtd_individuos):
menor_ = distancia_mutidao.argmin()
pop = np.delete(pop, menor_)
fitness = np.delete(fitness, menor_)
distancia_mutidao = np.delete(distancia_mutidao, menor_)
其中distance_mutidao、pop和fitness是NumPy数组。我试着从矩阵distancea_multidao,pop和fitness中去掉相应的较低值。
我正在绘制这些值,我得到了:
Distância de mutidão:
[1. 0.15555981 0.11988209 0.09177397 1. 0.14718105
0.08688929 0.14825755 0.01990456 0.11109479 0.02420551 0.22930752
0.16252269 0.29968407 0.03971115] População:
[[1 3 1 3 2 1 2 1 1 2 1 1 1 1 2]
[3 3 3 3 1 1 3 1 3 2 1 3 2 3 2]
[2 3 3 2 1 2 1 1 2 3 1 1 3 1 1]
[1 3 2 1 2 1 1 3 3 2 3 1 3 2 1]
[3 3 2 3 2 3 1 2 1 2 2 3 3 3 2]
[3 1 1 1 3 3 2 3 2 2 3 1 2 1 3]
[1 3 2 1 2 1 1 3 3 2 3 1 3 1 3]
[3 1 1 1 3 3 2 3 2 2 3 2 2 2 3]
[2 3 3 2 1 2 1 1 2 3 1 1 3 1 1]
[3 1 1 1 3 3 2 3 2 2 3 1 2 2 1]
[2 1 2 3 3 2 3 3 2 1 3 1 2 1 3]
[3 1 1 1 3 3 2 2 2 3 2 3 3 3 3]
[2 1 1 1 1 2 3 2 2 1 3 3 2 2 3]
[2 1 3 1 1 2 3 3 2 1 3 1 2 2 1]
[1 3 2 3 2 1 1 3 3 2 3 1 3 2 1]] Fitness:
[[ 8. 58.73167024]
[19. 49.34529535]
[12. 55.08177469]
[14. 53.10238747]
[20. 46.55252601]
[16. 51.15094548]
[15. 51.74934794]
[18. 49.47316082]
[12. 55.08177469]
[15. 52.503985 ]
[17. 51.2657001 ]
[20. 47.5785755 ]
[14. 53.62171346]
[13. 55.32419517]
[16. 51.44574786]]
所以,矩阵距离a_mutidao不是空的。。。为什么我会得到这个错误“ValueError:尝试获取空序列的argmin”?我想你的
距离多刀不是真正的numpy.matrix
或numpy.array
,而是其他东西。打印键入(distance\u mutidao)
以了解它是什么。实际上,我现在已经解决了它。。。问题在于我的删除功能。正确的是:pop=np.delete(pop,menor,axis=0)
fitness=np.delete(fitness,menor,axis=0)
,但我没有使用“axis”。正因为如此,我的停车条件是len(pop)
,距离的大小减少了,但是pop没有。