1 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
我假設(shè)你的代碼看起來像這樣
a1 = np.array([0, 0, 0])
update = [0.6402942957283034, 0.6017736334918196, 0.6096552413265736]
for i in range(0,3):
a1[i] = update[i]
print(a1)
這確實(shí)打印 array([0 0 0])
您看到這種行為的原因是因?yàn)榕c python 列表不同,numpy 數(shù)組必須包含相同類型的值。創(chuàng)建數(shù)組時(shí)a1,您沒有明確指定類型,因此創(chuàng)建了一個(gè)int64數(shù)組。嘗試做
print(a1.dtype)
update是一個(gè)float64所有數(shù)字都小于 1的數(shù)組。當(dāng)您將 float < 1 轉(zhuǎn)換為 int 時(shí),它變?yōu)?0。
您的問題的解決方案是明確指定 array 的類型a1。
a1 = np.array([0, 0, 0], dtype='float64')
另一方面,為什么要逐個(gè)復(fù)制元素?你本可以做的
a1 = np.asarray(update)
添加回答
舉報(bào)