python把mat数据里的数组_python – 将.mat文件中的复杂数据作为numpy数组导入

我在Windows Server 2008上使用matlab R2010b,我似乎需要’-v7.3’来保存到hdf5文件中.没有选项,我得到“版本0x0100”,并选择,我得到“版本0x0200”.

a = rand(10,10,10) + 1i*rand(10,10,10);

a(10,10,10) % in my case, result is 0.8667 + 0.3673i

save('trial.mat', '-v7.3')

在Python端(在我的情况下在Linux下运行):使用视图将元组变为复杂值,然后使用实际值重复以检查排序是否正确:

import numpy as np

import h5py

f = h5py.File('trial.mat','r')

zz = f['a'].value.view(np.double).reshape((10,10,10,2))

zzj = zz[:,:,:,0] + 1j*zz[:,:,:,1]

zzk = f['a'].value.view(np.complex)

np.all(zzk == zzj) # result is "True"

zzj.shape # result is (10, 10, 10)

zzk[9,9,9].imag == f['a'][9,9,9][1] # result is "True"

zzk[9,9,9] # result is (0.8667498969993187+0.36728591513136899j) consistent with Matlab

我们看到:

> zzj和zzk具有正确排序为真实和图像的复杂值

> zzj和zzk中的相应条目与Matlab中的值匹配

我没有把时间与巨大的阵列进行比较,但我敢打赌将hdf5对象直接转换为复杂对象是最快的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值