首页 > 解决方案 > 为什么 np.load 在没有 allow_pickle=True 的情况下无法加载使用 np.save() 保存的文件

问题描述

我正在尝试使用 np.save() 将二维数组保存为 npy 文件。它保存时没有任何错误,也没有使用任何酸洗。但是当我加载文件时,我得到以下错误回溯:

Traceback (most recent call last):
  File "final_model.py", line 144, in <module>
    a=create_bags('abnormal')
  File "final_model.py", line 130, in create_bags
    video_feature=np.load(DATASET_ROOT+'train/features/'+flag+'/'+file)
  File "/home/aditya_vartak_quantiphi_com/anaconda3/envs/v/lib/python3.8/site-packages/numpy/lib/npyio.py", line 452, in load
    return format.read_array(fid, allow_pickle=allow_pickle,
  File "/home/aditya_vartak_quantiphi_com/anaconda3/envs/v/lib/python3.8/site-packages/numpy/lib/format.py", line 739, in read_array
    raise ValueError("Object arrays cannot be loaded when "
ValueError: Object arrays cannot be loaded when allow_pickle=False

我在互联网上对其进行了研究,只是发现一个声明说,

Array might not be loaded properly , that's why np.load is considering it as object array

所以我所做的是为该文件制作了一个测试代码(让我们称之为error_file),如下所示:

f_b=feature_extractor(file_loc)
np.save(target_path,f_b)
feature=np.load(target_path)
print(feature, feature.shape)

这会产生预期的结果而不会引发错误

但是当我在一个函数中使用它时,该函数一个接一个地接收所有特性 npy 文件并加载它以打印其内容,函数的执行将在遇到 error_file上述回溯的确切点停止

测试代码应该用正确的替换了错误形成的特征 npy,但错误似乎与文件无关,但与 np.save 本身有关。附录:该函数适用于它之前的所有 npy 文件,即使它们在特征形成期间都经历了相同的过程

任何帮助都会很棒

标签: pythonarraysnumpypickle

解决方案


推荐阅读