在使用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']