我一直在尝试输出npy文件的内容,当print(np.load('/home/ugwz/fcn/vgg16.npy', encoding='latin1'))
时,输出的一部分如下所示,这有点难以阅读。
然后我尝试输出这个数组的元数据
print(np.load('/home/vgg16.npy', encoding='latin1').size)
print(np.load('/home/vgg16.npy', encoding='latin1').shape)
print(np.load('/home/vgg16.npy', encoding='latin1').ndim)
输出如下:
1
()
0
阅读和理解npy
文件的最佳方式是什么?
附加信息如下:
print(np.load('/home/vgg16.npy',encoding='latin1').dtype)
object
print(np.load('/home/vgg16.npy',encoding='latin1').item().type)
AttributeError: 'dict' object has no attribute 'type'
print(np.load('/home/vgg16.npy',encoding='latin1').item().shape)
AttributeError: 'dict' object has no attribute 'shape'
答案 0 :(得分:2)
基于截屏结束
....], dtype=float)]}
我希望开始是{akey: [array(....
。换句话说,字典(一个或多个项目),列表(至少一个项目)和1d数组。
虽然你的大小,形状,ndim值表明这是一个单项,0维数组。它的dtype
是什么。我在猜dtype=object
。
看起来在列表和/或字典和/或对象dtype数组中嵌入了1d数组。
我没有使用encoding
参数。它的文件是:
编码:str,可选
阅读Python 2字符串时要使用的编码。仅在有用时 加载Python 2在Python 3上生成pickle文件,其中包括 包含对象数组的npy / npz文件。 “latin1”以外的值, 'ASCII'和'bytes'是不允许的,因为它们可以破坏数字 数据。默认值:'ASCII'
这与包含pickle对象的文件一致。 pickling
是用于保存列表,字典等的通用Python工具。np.save/load
可以处理pickle对象,但是以其特殊格式保存numpy数组,实际上是一个数组pickle。
我想知道这个文件是否可以加载pickle
(加载?),如果有更清楚的话?
我很想尝试使用allow_pickle=False
加载,以验证它是否正在尝试处理pickle对象,包括dtype=object
数组。
另一个尝试的是
data = load...
print(data.dtype) # object?
d1 = data[()] # or
d1 = data.item()
这些语句中的任何一个都应该从0d数组中提取单个元素。然后尝试识别d1
(类型,形状,类型等)。