关于加载npy文件并调查其中的内容

时间:2016-07-18 19:39:12

标签: python numpy

我一直在尝试输出npy文件的内容,当print(np.load('/home/ugwz/fcn/vgg16.npy', encoding='latin1'))时,输出的一部分如下所示,这有点难以阅读。

enter image description here

然后我尝试输出这个数组的元数据

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'

1 个答案:

答案 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(类型,形状,类型等)。