8
我想保存一個大的numpy數組並重新加載它。使用numpy.save
和numpy.load
,數組值被損壞/更改。數組的預保存和後加載的形狀和數據類型相同,但加載後數組的絕大多數值都爲零。 數組爲(22915,22915),值爲float64's,以.npy文件格式存儲3.94 gb,數據條目平均值約爲.1(不是可能合理轉換爲零的小浮點數)。我正在使用numpy 1.5.1。numpy保存/加載損壞數組
爲什麼發生這種腐敗的任何幫助將不勝感激,因爲我很茫然。以下是一些提供上述索賠證據的代碼。
In [7]: m
Out[7]:
array([[ 0. , 0.02023, 0.00703, ..., 0.02362, 0.02939, 0.03656],
[ 0.02023, 0. , 0.0135 , ..., 0.04357, 0.04934, 0.05651],
[ 0.00703, 0.0135 , 0. , ..., 0.03037, 0.03614, 0.04331],
...,
[ 0.02362, 0.04357, 0.03037, ..., 0. , 0.01797, 0.02514],
[ 0.02939, 0.04934, 0.03614, ..., 0.01797, 0. , 0.01919],
[ 0.03656, 0.05651, 0.04331, ..., 0.02514, 0.01919, 0. ]])
In [8]: m.shape
Out[8]: (22195, 22195)
In [12]: save('/Users/will/Desktop/m.npy',m)
In [14]: lm = load('/Users/will/Desktop/m.npy')
In [15]: lm
Out[15]:
array([[ 0. , 0.02023, 0.00703, ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
...,
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ],
[ 0. , 0. , 0. , ..., 0. , 0. , 0. ]])
In [17]: type(lm[0][0])
Out[17]: numpy.float64
In [18]: type(m[0][0])
Out[18]: numpy.float64
In [19]: lm.shape
Out[19]: (22195, 22195)
你有沒有試過,或者能夠嘗試一個新版本的Numpy? – nneonneo
我不能 - 1.5.1是我正在使用的其他庫的依賴項。如果它的固定版本更新(在我進行的搜索中有一些證據),那麼也許我可以嘗試升級,但顯然這可能會導致更多/其他問題。 – wdwvt1
幾件事情要嘗試:1)尋找數組變爲零的位置,2)嘗試單獨打印數組的最後一行/列(以查看它是否是一個奇怪的打印問題),3)嘗試通過指定''r''作爲'load'的第二個參數來使用內存映射。 – nneonneo