在使用numpy打开npz文件的时候,进行如下操作。

import os
import matplotlib.pyplot as plt
import numpy as np
data = np.load('你要读取的文件.npz')
data['columns']

会报这样的错误:

ValueError                                Traceback (most recent call last)
<ipython-input-5-c59aaba21cab> in <module>()
----> 1 data['columns']

~/anaconda3/lib/python3.6/site-packages/numpy/lib/npyio.py in __getitem__(self, key)
    260                 return format.read_array(bytes,
    261                                          allow_pickle=self.allow_pickle,
--> 262                                          pickle_kwargs=self.pickle_kwargs)
    263             else:
    264                 return self.zip.read(key)

~/anaconda3/lib/python3.6/site-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
    737         # The array contained Python objects. We need to unpickle the data.
    738         if not allow_pickle:
--> 739             raise ValueError("Object arrays cannot be loaded when "
    740                              "allow_pickle=False")
    741         if pickle_kwargs is None:

ValueError: Object arrays cannot be loaded when allow_pickle=False

因为numpy在升级后将np.load()参数allow_pickle默认改为False。
有两种解决方案,一是使用低一点的版本。
二是在读入文件的时候,在后面加个allow_pickle = True就可以完美解决。

import os
import matplotlib.pyplot as plt
import numpy as np
data = np.load('你要读取的文件.npz',allow_pickle = True)
data['columns']
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐