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

下面分别介绍之:

numpy.save()

  1. Save an array to a binary file in NumPy ``.npy`` format.
  2. Parameters
  3. ----------
  4. file : file, str, or pathlib.Path
  5. File or filename to which the data is saved. If file is a file-object,
  6. then the filename is unchanged. If file is a string or Path, a ``.npy``
  7. extension will be appended to the file name if it does not already
  8. have one.
  9. arr : array_like
  10. Array data to be saved.
  11. allow_pickle : bool, optional
  12. Allow saving object arrays using Python pickles. Reasons for disallowing
  13. pickles include security (loading pickled data can execute arbitrary
  14. code) and portability (pickled objects may not be loadable on different
  15. Python installations, for example if the stored objects require libraries
  16. that are not available, and not all pickled data is compatible between
  17. Python 2 and Python 3).
  18. Default: True
  19. fix_imports : bool, optional
  20. Only useful in forcing objects in object arrays on Python 3 to be
  21. pickled in a Python 2 compatible way. If `fix_imports` is True, pickle
  22. will try to map the new Python 3 names to the old module names used in
  23. Python 2, so that the pickle data stream is readable with Python 2.
  24. See Also
  25. --------
  26. savez : Save several arrays into a ``.npz`` archive
  27. savetxt, load
  28. Notes
  29. -----
  30. For a description of the ``.npy`` format, see :py:mod:`numpy.lib.format`.
  31. Examples
  32. --------
  33. >>> from tempfile import TemporaryFile
  34. >>> outfile = TemporaryFile()
  35. >>> x = np.arange(10)
  36. >>> np.save(outfile, x)
  37. >>> outfile.seek(0) # Only needed here to simulate closing & reopening file
  38. >>> np.load(outfile)
  39. array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

示例:

  1. import numpy as np
  2. a=np.mat('1,2,3;4,5,6')
  3. b=np.array([[1,2,3],[4,5,6]])
  4. np.save('a.npy',a)
  5. np.save('b.npy',b)

numpy.load()

  1. Wrapper around cPickle.load which accepts either a file-like object or
  2. a filename.
  3. Note that the NumPy binary format is not based on pickle/cPickle anymore.
  4. For details on the preferred way of loading and saving files, see `load`
  5. and `save`.
  6. See Also
  7. --------
  8. load, save

示例:

  1. data_a=np.load('a.npy')
  2. data_b=np.load('b.npy')
  3. print ('data_a \n',data_a,'\n the type is',type(data_a))
  4. 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() 函数,具体用法如下:

  1. np.savez('ab.npz',k_a=a,k_b=b)
  2. c=np.load('ab.npz')
  3. print (c['k_a'])
  4. 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 文件,该函数有两个参数,一个文件名和一个包含变量名和取值的字典.

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

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

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

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



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

  1. c=io.loadmat('a.mat')
  2. print (type(c))
  3. 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 文件后返回的是个字典,如果要访问里面的值,就要用到关键字,如:

  1. print(c['a_matrix'])

[[1 2 3] [4 5 6]]

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

Python numpy数据的保存和读取的更多相关文章

  1. Python中数据的保存和读取

    在科学计算的过程中,往往需要保存一些数据,也经常需要把保存的这些数据加载到程序中,在 Matlab 中我们可以用 save 和 lood 函数很方便的实现.类似的在 Python 中,我们可以用 nu ...

  2. npy数据的保存与读取

    保存 利用这种方法,保存文件的后缀名字一定会被置为.npy x = numpy.save("data_x.npy",x) 读取 data = numpy.load("da ...

  3. python numpy数据相减

    numpy数据相减,a和b两者shape要一样,然后是对应的位置相减.要不然,a的shape可以是(1,m),注意m要等于b的列数. import numpy as np a = [ [0, 1, 2 ...

  4. python numpy实现多次循环读取文件 等间隔过滤数据

    numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样 如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加 ...

  5. Python——NumPy数据存取与函数

    1.数据csv文件存贮 1.1 CSV文件写入 CSV (Comma‐Separated Value, 逗号分隔值)CSV是一种常见的文件格式,用来存储批量数据 np.savetxt(frame, a ...

  6. python中数据的保存

    1.将list中的数据写入到excel文件中 利用python包numpy(实现方式应该有许多种,这里只是记录成功实现的一种)中的savetxt 局限性:要保存的list可以为[1,2,3,4,5]这 ...

  7. Numpy数组的保存与读取

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

  8. Matlab数据处理——数据的保存和读取方法操作

    1:dlmwrite()函数保存成txt文件 使用方法:      dlmwrite('filename', M)      使用默认分隔符“,”将矩阵M写入文本文件filename中:      d ...

  9. Numpy数组的保存与读取方法

    1. 数组以二进制格式保存 np.save和np.load是读写磁盘数组数据的两个主要函数.默认情况下,数组以未压缩的原始二进制格式保存在扩展名为npy的文件中,以数组a为例 np.save(&quo ...

随机推荐

  1. HDU1022--Train Problem I(栈的应用)

    Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...

  2. Windows操作系统Apache服务器下配置PHP

    在Apache web服务器上发布PHP项目之前,需要进行相应的配置,服务器才能解析php文本,正常显示php动态页面内容.在进行php配置之前默认已经在Windows系统下安装好了Apache服务器 ...

  3. Vue.use源码分析(转)+如何封装一个组件

    封装一个组件:https://www.jianshu.com/p/89a05706917a 我想有过vue开发经验的,对于vue.use并不陌生.当使用vue-resource或vue-router等 ...

  4. the path component: '/var' is world-writable

    java.io.IOException: the path component: '/var' is world-writable.  Its permissions are 0666.  Pleas ...

  5. Mybatis 一对多 关联查询查询

    一对多 与 一对一 查询有许多相似之处. 最主要的区别是 查询结果是list,与之对应的标签为collection. 班级和学生,一个班有多个学生,而每个学生只能属于一个班. 此时班级编号作为学生表的 ...

  6. .net framework4.6项目的dll升级后,未找到方法“System.String.GetPathsOfAllDirectoriesAbove”解决

    https://stackoverflow.com/questions/59276192/getpathsofalldirectoriesabove-cannot-be-evaluated-after ...

  7. lnmp源码搭建

      Nginx工作原理 这里需要结合Apache的工作,对PHP文件处理过程的区别 1:Nginx是通过php-fpm这个服务来处理php文件        2:Apache是通过libphp5.so ...

  8. 阶段3 1.Mybatis_02.Mybatis入门案例_1.mybatis的入门

    H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2.0)-Mybatis\mybatis\mybatis_d ...

  9. 正则表达式——Unicode 匹配规则

      一般来说,数字字符解释[0-9],单词字符就是[0-9a-zA-Z_],空白字符则包括空格.回车等字符,但这是 ASCII 编码中的情况,在 Unicode 编码中并非如此.   因为包括了多种语 ...

  10. TiDB配置HAProxy负载均衡

    1.简介 HAProxy是一个C语言编写的免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上. HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能. 2. ...