Python中数据的保存和读取

Posted 编程浪子-Yiutto

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中数据的保存和读取相关的知识,希望对你有一定的参考价值。

在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save  lood 函数很方便的实现。类似的在 Python 中,我们可以用 numpy.save()  numpy.load() 函数达到类似的效果,并且还可以用 scipy.io.savemat() 将数据保存为 .mat 格式,用scipy.io.loadmat() 读取 .mat 格式的数据,达到可以和 Matlab 或者Octave 进行数据互动的效果.

下面分别介绍之:

numpy.save() 和 numpy.load()

numpy.save(arg_1,arg_2) 需要两个参数,arg_1 是文件名,arg_2 是要保存的数组. 如:

import numpy as np

a=np.mat(\'1,2,3;4,5,6\')

b=np.array([[1,2,3],[4,5,6]])

np.save(\'a.npy\',a)

np.save(\'b.npy\',b)

 

  • 这个时候 Python 的当前工作路径下就会多出 a.npy  b.npy 两个文件,当然我们也可以给出具体的路径,如 np.save(\'D:/PythonWork/a.npy\',a)

    下面我们把保存的这两个数据文件导入到Python :

    data_a=np.load(\'a.npy\')
    
    data_b=np.load(\'b.npy\')
    
    print (\'data_a \\n\',data_a,\'\\n the type is\',type(data_a))
    
    print (\'data_b \\n\',data_a,\'\\n the type is\',type(data_b))
    
     
    
    data_a
    
    [[1 2 3]
    
    [4 5 6]]
    
    the type is <class \'numpy.ndarray\'>
    
     
    
    data_b
    
    [[1 2 3]
    
    [4 5 6]]
    
    the type is <class \'numpy.ndarray\'>
  • 我们可以看到这一过程把原本为矩阵的 a 变为数组型了

    如果想同时保存 a b 到同一个文件,我们可以用 np.savez() 函数,具体用法如下:

    np.savez(\'ab.npz\',k_a=a,k_b=b)
    
    c=np.load(\'ab.npz\')
    
    print (c[\'k_a\'])
    
    print (c[\'k_b\'])
    
     
    
    [[1 2 3]
    
    [4 5 6]]
    
     
    
    [[1 2 3]
    
    [4 5 6]]

     

  • 这时的 c 是一个字典,需要通过关键字取出我们需要的数据

    下面我们来认识下 scipy.io.savemat()  scipy.io.loadmat()

    首先我们用 scipy.io.savemat() 创建 .mat 文件,该函数有两个参数,一个文件名和一个包含变量名和取值的字典.

    import numpy as np
    
    from scipy import io
    
    a=np.mat(\'1,2,3;4,5,6\')
    
    b=np.array([[1,1,1],[2,2,2]])
    
    io.savemat(\'a.mat\', {\'matrix\': a})
    
    io.savemat(\'b.mat\', {\'array\': b})

     

     

     

  • 至此 Python 的当前工作路径下就多了 a.mat  b.mat 这两个文件.

    下面我们用 Matlab 读取这两个文件

    可以看到 Matlab 已成功读取 Python 生成的 .mat 文件.

    我们在来看看 Python 是怎么读取 .mat 文件的。首先来读取刚才生成的 a.mat

    c=io.loadmat(\'a.mat\')
    
    print (type(c))
    
    print (c)
    
     
    
    dict
    {\'__version__\': \'1.0\', \'__globals__\': [], \'__header__\': b\'MATLAB 5.0 MAT-file Platform: nt, Created on: Tue Aug 4 16:49:28 2015\', \'a_matrix\': array([[1, 2, 3],[4, 5, 6]])}
  • 所以 Python 读取.mat 文件后返回的是个字典,如果要访问里面的值,就要用到关键字,如:

    print(c[\'a_matrix\'])
    
     
    
    [[1 2 3]
    
    [4 5 6]]

     

     

     

  • 当然了,Python 也可以读取 Matlab 创建的 .mat 文件,从而可以把他们设置在同一工作路径下,在必要的时候进行数据的共享.

以上是关于Python中数据的保存和读取的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里更改此 Python 代码片段以将临时文件保存在 tmp 文件夹中?

Python学习总结

Python中数据的保存和读取

在 python 中录制流媒体和保存网络广播

为啥 Python 不使用对象 .save() 将我的模型保存到数据库?

Python Numpy中数据的常用的保存与读取方法