У меня нет проблем с использованием pickle
:
In [126]: arr = np.zeros((1000,2))
In [127]: with open('test.pkl','wb') as f:
...: pickle.dump(arr, f)
...:
In [128]: with open('test.pkl','rb') as f:
...: x = pickle.load(f)
...: print(x.shape)
...:
...:
(1000, 2)
pickle
и np.save/load
имеют глубокую взаимность.Как я могу загрузить этот рассол с помощью np.load
:
In [129]: np.load('test.pkl').shape
Out[129]: (1000, 2)
Если я открою файл рассола неправильно, я получу вашу ошибку:
In [130]: with open('test.pkl','wb') as f:
...: x = pickle.load(f)
...: print(x.shape)
...:
UnsupportedOperation: read
Но это не должно бытьУдивительно - вы не можете прочитать недавно открытый файл записи.Он будет пустым.
np.save/load
- это обычная пара для записи пустых массивов.Но pickle использует save
для сериализации массивов, а save
использует pickle для сериализации объектов, не являющихся массивами (в массиве).Результирующие размеры файлов похожи.Любопытно, что время рассола версия быстрее.