當嘗試按照numpy 檔案中的描述加載 npz 檔案時,我遇到了物件型別numpy.lib.npyio.NpzFile。
這是代碼:
imgs = np.ones((3,32,32,3))
masks = np.ones((3,32,32,1))
array_dict = {"imgs" : imgs, "masks": masks}
np.savez_compressed("/path/to/imgs_with_masks.npz", array_dict)
loaded_data = np.load("/path/to/imgs_with_masks.npz")
print(type(loaded_data), " - ", loaded_data)
這個的輸出是:
<class 'numpy.lib.npyio.NpzFile'> - <numpy.lib.npyio.NpzFile object at 0x2b766fa00>
我期待一個可以使用的解壓縮結構,但我得到的是一個未累積的物件。這里發生了什么,我如何從中獲取資料?
uj5u.com熱心網友回復:
你需要array_dict通過**to np.savez_compressed。如果您傳遞任意 Python 物件,numpy 將使用 pickle 而不是直接壓縮陣列。
一旦您將陣列作為 kwargs 傳遞,當您加載 npz 檔案時,您可以使用括號表示法訪問陣列:
# Save
>>> np.savez_compressed("imgs_with_masks.npz", **array_dict)
# Now load
>>> loaded = np.load("imgs_with_masks.npz")
>>> loaded
<numpy.lib.npyio.NpzFile at 0x1318ad940>
>>> list(loaded.keys())
['imgs', 'masks']
>>> loaded['img']
array([[[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
...
]]])
>>> loaded['masks']
array([[[[1.],
[1.],
[1.],
...,
[1.],
[1.],
[1.]],
]])
uj5u.com熱心網友回復:
總是,當我想創建一個 numpy.npz檔案時,我會這樣寫:
保存 NPZ 檔案:
import numpy as np
imgs = np.ones((3,32,32,3))
masks = np.ones((3,32,32,1))
np.savez_compressed('imgs_with_masks.npz', imgs=imgs, masks=masks)
加載 NPZ 檔案:
npz_dataset = np.load('imgs_with_masks.npz')
print(npz_dataset.files)
imgs = npz_dataset['imgs']
masks = npz_dataset['masks']
print(imgs.shape)
print(masks.shape)
輸出:
['imgs', 'masks']
(3, 32, 32, 3)
(3, 32, 32, 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487625.html
