Python使用pickle模块储存对象操作

Python读取mat文件,并保存为pickle格式的方法

这两天在搞Theano,要把mat文件转成pickle格式载入Python。

Matlab是把一维数组当做n*1的矩阵的,但Numpy里还是有vector和matrix的区别,Theano也是对二者做了区分。

直接把代码贴出来吧,好像也没什么可讲的 = =

from scipy.io import loadmat

import numpy, cPickle

data_dict=loadmat(r'E:\dataset\CIFAR10\CIFAR10_small.mat') #need an r!

my_array=numpy.array([1,1])

for key in data_dict.keys():

if type(data_dict[key]) == type(my_array):

#print matrix information

print key, type(data_dict[key]),

print data_dict[key].shape

#shape(n,1) (matrix in theano) -> shape(n,) (vector in theano)

print data_dict['Ytr'].shape

Ytr=numpy.hstack(data_dict['Ytr'])

Yte=numpy.hstack(data_dict['Yte'])

Yte=numpy.hstack(data_dict['Yte'])

print Ytr.shape

train_set=(data_dict['Xtr'],Ytr)

valid_set =(data_dict['Xte'],Yte)

test_set =(data_dict['Xte'],Yte)

output = open('cifar10_small_v.pkl', 'wb')

cPickle.dump(train_set, output)

cPickle.dump(valid_set, output)

cPickle.dump(test_set, output)

output.close()

print 'save is done'

pkl_file = open('cifar10_small_v.pkl', 'rb')

data1 = cPickle.load(pkl_file) # is train_set

data2 = cPickle.load(pkl_file) # is valid_set

data3 = cPickle.load(pkl_file) # is test_set

print type(data1[1]),data1[1].shape

pkl_file.close()

Python pickle模块用法实例分析

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

pickle.dump(obj, file[, protocol])

序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

pickle.load(file)

反序列化对象。将文件中的数据解析为一个Python对象。

其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错:

比如下面的例子

import pickle

class Person:

def __init__(self,n,a):

self.name=n

self.age=a

def show(self):

print self.name+"_"+str(self.age)

aa = Person("JGood", 2)

aa.show()

f=open('d:\\p.txt','w')

pickle.dump(aa,f,0)

f.close()

#del Person

f=open('d:\\p.txt','r')

bb=pickle.load(f)

f.close()

bb.show()

如果不注释掉del Person的话,那么会报错如下:

>>>

JGood_2

Traceback (most recent call last):

File "C:/py/test.py", line 15, in

bb=pickle.load(f)

File "C:\Python27\lib\pickle.py", line 1378, in load

return Unpickler(file).load()

File "C:\Python27\lib\pickle.py", line 858, in load

dispatch[key](self)

File "C:\Python27\lib\pickle.py", line 1069, in load_inst

klass = self.find_class(module, name)

File "C:\Python27\lib\pickle.py", line 1126, in find_class

klass = getattr(mod, name)

AttributeError: 'module' object has no attribute 'Person'

意思就是当前模块找不到类的定义了。

clear_memo()

清空pickler的“备忘”。使用Pickler实例在序列化对象的时候,它会“记住”已经被序列化的对象引用,所以对同一对象多次调用dump(obj),pickler不会“傻傻”的去多次序列化。

看下面的例子:

import StringIO

import pickle

class Person:

def __init__(self,n,a):

self.name=n

self.age=a

def show(self):

print self.name+"_"+str(self.age)

aa = Person("JGood", 2)

aa.show()

fle = StringIO.StringIO()

pick = pickle.Pickler(fle)

pick.dump(aa)

val1=fle.getvalue()

print len(val1)

pick.clear_memo()

pick.dump(aa)

val2=fle.getvalue()

print len(val2)

fle.close()

上面的代码运行如下:

>>>

JGood_2

66

132

>>>

此时再注释掉pick.clear_memo()后,运行结果如下:

>>>

JGood_2

66

70

>>>

主要是因为,python的pickle如果不clear_memo,则不会多次去序列化对象。

Python使用pickle模块储存对象操作示例

众所周知,当我们需要储存数据的时候,就需要用到重定向。但是,这些都是储存简单的数据类型,那么当我们需要存储一个类的实例的时候该怎么存储呢?

实际上,我们需要用到一个模块———pickle,翻译为泡菜坛子

然后贴上一份代码:

# -*- coding:utf-8 -*-

import pickle

class Person():

def __init__(self, name, age):

self.name = name

self.age = age

def show(self):

print(self.name + '_' + str(self.age))

if __name__ == "__main__":

a = Person('tian', 20)

a.show()

c = Person('babydragon' ,5)

f = open('test.txt', 'wb')#这里一定要加上b,因为文件默认的write不能是bytes类型的,可以自己尝试着删去看报错

pickle.dump(a, f, 0)

pickle.dump(c, f, 0)

f.close()

f = open('test.txt', 'rb')

b = pickle.load(f)

mm = pickle.load(f)

cc = pickle.load(f)#有点类似于迭代器的感觉,这个就很强了,因为可以储存具体的实例666

f.close()

b.show()

mm.show()

print(b.name)

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

python保存为mat文件_Python读取mat文件保存为pickle格式的实例代码相关推荐

  1. python读取mat文件格式_Python读取mat文件,并保存为pickle格式的方法

    这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把一维数组当做n*1的矩阵的,但Numpy里还是有vector和matrix的区别,Theano也是对二者做 ...

  2. python 读取mat文件_python读取mat或npy文件以及将mat文件保存为npy文件(或npy保存为mat)的方法...

    numpy h5py scipy 读取mat文件并存为npy格式文件 具体见代码,注意h5py的转置问题 import numpy as np from scipy import io mat = i ...

  3. python如何打开mat文件_python读取mat文件

    一.mat文件 mat数据格式是Matlab的数据存储的标准格式.在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件.对于文件 load('data.m ...

  4. python处理mat数据_python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001. ...

  5. python读mat数据_python读取mat数据集

    以http://ufldl.stanford.edu/housenumbers/上的mat数据集为例 需要注意以下几点 从mat提取出来的数据以字典的形式保存,所以需要提取字典的key和value i ...

  6. python 读取文件_python读取docx文件,就是如此简单

    扫码加入千人跳槽求职QQ群或微信圈子,每日都有全国招聘信息哦     中文编码问题总是让人头疼(尤其是mac本),想要用Python读取word中的内容.用open()经常报错,通过百度搜索+问身边小 ...

  7. python读取手机文件_python 读取 网络 文件

    Python之pandas数据加载.存储 Python之pandas数据加载.存储 0. 输入与输出大致可分为三类: 0.1 读取文本文件和其他更好效的磁盘存储格式 2.2 使用数据库中的数据 0.3 ...

  8. python csv数据处理生成图_Python 读取CSV文件数据并生成可视化图形

    CSV 文件数据读取并生成图形 CSV 文件格式 在文本文件中存储数据,最简单的方式就是将数据按照一定的格式存放在文件中,在读取文件时根据设计好的格式去将对应数据读取出来,这样就能很方便的进行简单数据 ...

  9. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

最新文章

  1. 每个人都有一个“内外引擎”
  2. getBoundingClientRect计算页面元素的offsetLeft、offsetTop
  3. MongoDB图形化管理工具
  4. Scrapy项目 - 数据简析 - 实现腾讯网站社会招聘信息爬取的爬虫设计
  5. 流行病学数据分析基础:识别和控制混杂
  6. 如何解决Ubuntu 14.04编译make menuconfig时缺少'ncurses-devel'库
  7. 数据字典简单例子_Python学习100天-Day14(数据分析篇-pandas02)
  8. redis timeout设置多少合适_热水器怎么调温度?一般热水器温度设置多少度比较合适?...
  9. pmd 设置默认规则,只要使用了该规则集就自动使用
  10. ROC和AUC也不是评估机器学习性能的金标准
  11. unix linux系统版本,怎么查看UNIX系统版本?
  12. oracle分组关联统计,没有记录则显示0
  13. linux基础之基础命令一
  14. VS2012 无法启动IIS Express Web服务器的解决方案
  15. HDU 6162 2017 多校训练:Ch's gift(树链剖分)
  16. Java HashSet的元素内容变化导致的问题
  17. ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
  18. Speedoffice(word)怎么撤回上一步的操作
  19. Java小例子—薪水计算器(含具体的代码思路)
  20. opencv视频拼接 opencv视频拼接优化

热门文章

  1. 最新 || 精容数安数据保护解决方案
  2. python中安装wordcloud 出现cl.exe failed with exit status 2问题解决
  3. linux部署csgo服务器,CSGOLinux服务器架设20150311_图文.doc
  4. Linux 压缩包乱码
  5. 用AI“狙杀”威胁地球的天体 这个团队花5万美元做到了
  6. 图文编排之HTML身份介绍浮动(图片换成自己的就行啦)
  7. 洛谷 P2325 王室联邦
  8. 磁盘配额管理disk quotas
  9. 计算机操作系统第四版读书笔记,《操作系统》读后感10篇
  10. win10系统作为文件服务器,win10作为云服务器吗