Ошибка Numpy.load () при использовании разных платформ - PullRequest
0 голосов
/ 25 января 2019

Я использую np.save/np.load для сохранения своих данных в файлы и чтения из другого скрипта.Хотя код работает должным образом как в Windows, так и в Linux, возникает проблема, когда я пытаюсь загрузить мои файлы .npy, созданные в Linux, с моей установкой Windows.В обоих случаях я использую python 3.6, с обновленными пакетами (numpy версия одинакова).

Я заметил, что это происходит только в массивах с dtype = object, а не в массивах другого типа.Я получаю сообщение об ошибке: «TypeError: _reconstruct: первый аргумент должен быть подтипом ndarray».

Я попытался изменить параметр allow_pickle в np.save на False, но это не сработало (нене позволяет мне сохранить несколько массивов).

Есть идеи, что случилось?Какие-нибудь предложения по другому способу сохранения моих данных кроссплатформенными?

Спасибо

Редактировать: я попробовал несколько простых экспериментов со словарями и массивами, и оказалось, что проблема существует в разных конфигурациях.

Например, pickle.dump () работает для словарей, если я экспортирую в Unix и загружаю (pickle.load) в Windows, но не с массивными массивами.

С другой стороны,np.save () / np.load () работает для не объектных массивов numpy, но не для словарей, когда я экспортирую в Unix и загружаю в Windows.

Оба эти метода не работают для numpy объектов или списковмассивы (например, список np.arrays с различными формами)

Конечно, np.save/np.load работает правильно для всех видов данных, учитывая, что я использую ту же платформу.

Есть еще идеи?Я пробовал формат hdf5, но все равно получаю некоторые ошибки.

...