pythonmat矩阵和matlabnpy矩阵实现互相转换

  小编写这篇文章的目的,主要是给大家介绍关于python和npy矩阵的相关介绍,下面会给大家做出一个详细的解答,希望可以给各位读者带来帮助。

  mat矩阵和npy矩阵互相转换

  numpy.narray矩阵保存为mat文件

  import numpy as np
  import scipy.io as io
  mat_path='your_mat_save_path'
  mat=np.zeros([4,20])
  io.savemat(mat_path,{'name':mat})

  注意这里的mat是numpy类型的

  读取mat文件

  import numpy as np
  from scipy import io
  mat=io.loadmat('yourfile.mat')
  #如果报错:Please use HDF reader for matlab v7.3 files
  #改为下一种方式读取
  import h5py
  mat=h5py.File('yourfile.mat')
  #mat文件里可能有多个cell,各对应着一个dataset
  #可以用keys方法查看cell的名字,现在要用list(mat.keys()),
  #另外,读取要用data=mat.get('名字'),然后可以再用Numpy转为array
  print(mat.keys())
  #可以用values方法查看各个cell的信息
  print(mat.values())
  #可以用shape查看维度信息
  print(mat['your_dataset_name'].shape)
  #注意,这里看到的shape信息与你在matlab打开的不同
  #这里的矩阵是matlab打开时矩阵的转置
  #所以,我们需要将它转置回来
  mat_t=np.transpose(mat['your_dataset_name'])
  #mat_t是numpy.ndarray格式
  #再将其存为npy格式文件
  np.save('yourfile.npy',mat_t)

  npy文件与mat文件的保存与读取

  除了常用的csv文件和excel文件之外,我们还可以通过PY把数据保存文npy文件格式和mat文件格式。

  1.npy文件

  npy即numpy对应的文件格式,关于其保存使用的是np.save()方法,其读取使用的是np.load()方法。

  具体示例如下:

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

0.png

  保存文件:

  如图,矩阵和numpy数组都支持以npy文件类型保存。

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

1.png

  读取文件

 data1=np.load('a.npy')
  data2=np.load('b.npy')
  print(data1)
  print(type(data1))
  print("=================================")
  print(data2)
  print(type(data2))

2.png

  2.mat文件

  保存为mat文件依赖于scipy库中的scipy.io.savemat()方法,读取则需要用到scipy.io.loadmat()方法。

  保存时,不仅仅需要传入变量,还需要将该变量的类型一并以字典的形式传入,一样支持numpy数组和矩阵。

  具体示例如下:

  import numpy as np
  from scipy import io
  a=np.mat('1,2,3;4,5,6')
  print(a)
  print(type(a))
  print("=================================")
  b=np.array([[1,2,3],[4,5,6]])
  print(b)
  print(type(b))
  io.savemat('a.mat',{'matrix':a})
  io.savemat('b.mat',{'array':b})
  读取数据
  data1=io.loadmat('a.mat')
  print(data1)
  print(type(data1))
  print("=================================")
  data2=io.loadmat('b.mat')
  print(data2)
  print(type(data2))

4.png

  如图,数据成功被读取。但是读取的结果是一个字典,如果需要进一步读取到数据,则需要根据键名将其取出:

 print(data1['matrix'])
  print(type(data1['matrix']))
  print("=================================")
  print(data2['array'])
  print(type(data2['array']))

5.png

  以上就是小编为大家总结的相关知识,希望可以为各位读者带来更多的帮助。

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/3966.html

发表评论

登录后才能评论