当试图像无意义文件中所描述的那样加载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>
我期待一个我可以使用的解压缩结构,但我却得到了一个未文档化的对象。这里发生了什么,我如何从这里得到我的数据?
发布于 2022-06-05 16:59:20
您需要将array_dict
和**
传递给np.savez_compressed
。如果传递任意Python对象,numpy将使用泡菜,而不是直接压缩数组。
将数组作为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.]],
]])
发布于 2022-06-05 16:53:07
通常,当我想要创建一个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://stackoverflow.com/questions/72509271
复制相似问题