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

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日

悬赏问题

  • ¥30 数据库软件的安装方法
  • ¥15 一道以太网数据传输题
  • ¥15 python 下载群辉文件
  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
手机看
程序员都在用的中文IT技术交流社区

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

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

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

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

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

客服 返回
顶部