Этот вопрос включает в себя np.save
и np.load
лучшие практики. Поскольку более новая версия numpy версии 1.16.3, по умолчанию в np.load
установлено значение allow_pickle=False
.
После сохранения списка дальнейшее объявление загрузки прекрасно работает со значением по умолчанию allow_pickle=False
:
>> x = [0, 1, 2]
>> np.save('my_x_list.npy', x)
>> loaded_x = np.load('my_x_list.npy')
>> loaded_x
Out: array([0, 1, 2])
То же самое относится к массиву numpy:
>> y = np.arange(10)
>> np.save('my_y_numpy_array.npy', y)
>> loaded_y = np.load('my_y_numpy_array.npy')
>> loaded_y
Out: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Однако словарь выдает эту ошибку:
>> mydict = {'a': 4, 'b': 5}
>> np.save('my_dict.npy', mydict)
>> loaded_z = np.load('my_z_dict.npy')
ValueError: Object arrays cannot be loaded when allow_pickle=False
Насколько я понимаю, словари, списки и numpy массивы - это все Object arrays
. Следовательно, можно ожидать, что numpy массивы или списки также вызовут эту ошибку. Почему эта ошибка возникает в словарях, а не в numpy массивах или списках?