我正在實現一個使用Python Numpy包的程序。我試圖修改一個數組的元素,這樣我只需取elem[i][j]
並將其設置爲elem[i][j]/10
。不過,我在操作後將元素設置爲0的情況下不斷得到某種截斷。這裏是我的代碼:Numpy截斷?
for word in allwords:
for x in xrange(wordarrays[word].shape[0]):
for y in xrange(wordarrays[word].shape[1]):
wordarrays[word][x][y]=wordarrays[word][x][y]/10
在我的代碼wordarrays是從字符串到數組的字典。當我簡單地打印wordarrays [word] [x] [y]/10截斷不是一個問題,並且浮點除法按預期進行。我檢查過,數組都有dtype = float64,所以不應該是問題。我也嘗試通過使用nditer
這裏介紹的方法修改陣列這是什麼導致這種截斷? 感謝您的幫助!
給出一些關於我的異常輸出的更多細節。分割之前,是wordarray [「陳」]中的條目,如下所示:
[[2. 3.]
[4. 1.]]
由10(或10.0)我得到這個對於相同的陣列劃分後:
[[1.01000000e-04 1.20000000e-05]
[1.11001000e-01 1.00000000e-06]]
哪個沒有按似乎沒有任何意義。我認識到,雙循環不是pythonic,但這是我認爲與np.nditer迭代無效時嘗試的方法。爲了解決一些評論,我確實嘗試了除以10和10.0。結果是一樣的。
此外,當我無需更換陣列的條目執行相同的操作,只是打印的劃分,即:
for word in allwords:
for x in xrange(wordarrays[word].shape[0]):
for y in xrange(wordarrays[word].shape[1]):
print wordarrays[word][x][y]/10
我得到的期望是什麼,即:
[[0.2 0.3]
[0.4 0.1]]
你是什麼意思,截斷?你能說明你的問題嗎?你確定它不是一個顯示問題(即底層數據實際上沒有被截斷)嗎? –
注意:使用循環並不是真正的numpythonic,你應該可以用'wordarrays [word]/= 10'獲得相同的結果(假設就地分區對你的'dtype'起作用) –
你確定'allwords'包含唯一的單詞元素? – heltonbiker