[英]Issue in numpy when change numpy array value during vector normalization
假設我有一個 numpy 數組a = np.array([[1,2,3],[2,3,4]])
我想把這兩個向量變成單位向量。 工作代碼是
for i in range(2):
a[i] = a[i]/np.linalg.norm(a[i])
最后,結果a變成:
一個=
array([[0, 0, 0],
[0, 0, 0]])
而如果我運行計算並打印出類似的結果
for i in range(2):
print(a[i],i,np.linalg.norm(a[i]))
該代碼將打印出正確的結果作為單位向量。
因此我的問題是: 1. 如果我將 numpy 數組分配給單位向量結果,為什么它會變為零。 2.通過numpy數組將向量列表更改為單位向量的正確方法是什么?
非常感謝大家!
因為numpy.array()
要求您聲明數組中包含的對象的數據類型。 如果未聲明,它將被確定為最小數據類型。 在您的情況下,它將是一個int
。 要解決您的問題,您可以使用dtype = float
創建一個新數組或聲明a
的dtype
。
a = np.array([[1,2,3],[2,3,4]], dtype=np.float32)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.