yxue1209 2021-09-23 01:17 采纳率: 66.7%
浏览 45
已结题

pkl文件读取后列名对应不上

import _pickle as cPickle

f=open('文件名.pkl', 'rb')
data = cPickle.load(f, encoding='bytes')
print(data)
print(data.keys())

dataset = data['dataset']
labels = data['labels']
print('shape:',dataset.shape,labels.shape)

环境是python3.5
在print(data)后数据可以显示出来,如下所示。但是执行第二段的时候,会报错,KeyError: 'dataset',可是这个数据集中(如下)是有'dataset'的,求解。

{b'labels': array([[0],
       [0],
       ....
       [1]], dtype=int64), b'dataset': array([[[-4.00000000e-02, -3.90000000e-02,  9.00000000e-03, ...,
         -7.88950492e-01, -1.50975928e+00, -1.99603159e+00],
        ...,
        [-4.90000000e-02, -2.00000000e-02,  1.60000000e-02, ...,
         -7.86839409e-01, -1.50889891e+00, -1.42230309e+00]],
       [[ 4.20000000e-02, -3.20000000e-02, -6.40000000e-02, ...,
         -7.01993713e-01, -5.70277292e-01, -3.32443958e+00]]])}

data.keys()的打印结果如下

dict_keys([b'labels', b'dataset'])
  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2021-09-23 02:01
    关注

    从print(data)看键的名称分别是b'labels', b'dataset',而引用时用的dataset,labels,名称不一样,所以没有找到对应的键。需要对data的键从字节型转换为字符串型,即decode一下。

    dt = {}
    for k,v in data.items():
        dt.update({k.decode():v})
    print(dt)
    dataset = dt['dataset']
    labels = dt['labels']
    
    
    

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月23日
  • 创建了问题 9月23日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部