1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
問(wèn)題在于你如何索引。要執(zhí)行您想要的操作,您需要寫入該項(xiàng)目[0,0,0](而不是[0][0][0])。以下代碼執(zhí)行您的意圖:
import h5py
import numpy as np
file = h5py.File('myfile.h5', 'w')
file["myArray"] = np.arange(5*5*5).reshape(5,5,5)
print("old value is :", file["myArray"][0,0,0])
file["myArray"][0,0,0] = 100
print("new value is :", file["myArray"][0,0,0])
file.close()
(在您關(guān)閉/重新打開文件時(shí)也可以工作,為了清楚起見,我省略了該文件)。此代碼輸出:
old value is : 0
new value is : 100
請(qǐng)考慮Numpy 關(guān)于索引的文檔以獲取更多信息。
閱讀文檔后,您應(yīng)該感到驚訝,您所做的并沒有奏效。因?yàn)?/p>
A = np.arange(5*5*5).reshape(5,5,5)
A[0][0][0] = 100
print(A[0,0,0])
確實(shí)輸出100。這是有效的,因?yàn)槊看文愣紩?huì)[0]得到一個(gè)指向子數(shù)組(而不是副本)的指針。修改此子數(shù)組的條目從而修改基礎(chǔ)數(shù)據(jù)(原始數(shù)組)。
我的猜測(cè)是,因?yàn)閔5py寫入光盤,[0]第一次獲取確實(shí)返回一個(gè)副本(而此后返回一個(gè)指針)。這個(gè)懷疑在這個(gè)例子中得到證實(shí):
import h5py
import numpy as np
file = h5py.File('myfile.h5', 'w')
file["myArray"] = np.arange(5*5*5).reshape(5,5,5)
data = file["myArray"][0]
data[0,0] = 100
print(data[0,0])
print(file["myArray"][0,0,0])
file.close()
哪個(gè)輸出
100
0
添加回答
舉報(bào)