You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Colab加载大numpy对象时遇UnpicklingError: pickle data was truncated

解决Colab中加载大型numpy文件出现UnpicklingError: pickle data was truncated的问题

在Google Colab中执行以下代码加载大型numpy对象时:

data = np.load('sample_data/train_data.npy', allow_pickle = True)

触发错误:

UnpicklingError: pickle data was truncated

本地执行相同代码无异常,且已确认train_data.npy已上传至Colab环境,常规解决方案无效。

以下是针对性的解决方法:

  • 校验文件完整性
    上传后对比本地与Colab中文件的大小,在Colab终端执行:

    !ls -lh sample_data/train_data.npy
    

    将输出的文件大小和本地文件大小对比,若不一致说明上传过程中文件损坏,需重新上传(建议通过Google Drive挂载上传,比直接拖传更稳定)。

  • 分块加载大型文件
    若文件完整但因体积过大导致加载失败,尝试分块读取:

    import numpy as np
    
    with open('sample_data/train_data.npy', 'rb') as f:
        # 读取numpy文件头信息
        magic = f.read(6)
        version = np.lib.format.read_magic(magic)
        header = np.lib.format.read_array_header_1_0(f)
        dtype = header['descr']
        shape = header['shape']
        
        # 设置分块大小(可根据内存调整)
        chunk_size = 1000
        data = np.empty(shape, dtype=dtype)
        
        # 逐块读取并填充数组
        for i in range(0, shape[0], chunk_size):
            end_idx = min(i + chunk_size, shape[0])
            data[i:end_idx] = np.load(f, allow_pickle=True)
    
  • 通过Google Drive挂载读取文件
    直接拖传大文件易出现中断或损坏,挂载Google Drive后从Drive读取更可靠:

    from google.colab import drive
    drive.mount('/content/drive')
    
    # 替换为你在Drive中的文件路径
    data = np.load('/content/drive/MyDrive/your_folder/train_data.npy', allow_pickle=True)
    
  • 本地重新预处理numpy文件
    若本地文件正常但Colab加载异常,可在本地重新保存文件,调整保存参数后再上传:

    # 本地环境执行
    import numpy as np
    local_data = np.load('train_data.npy', allow_pickle=True)
    # 禁用压缩重新保存
    np.save('train_data_reprocessed.npy', local_data, allow_pickle=True)
    

    将新生成的train_data_reprocessed.npy上传至Colab尝试加载。

内容的提问来源于stack exchange,提问作者Bard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:42:35