我有许多包含复数数组的 HDF5 数据集,这些数据集是我使用 Python 和 h5py
创建的。例如:
import numpy, h5py
with h5py.File("test.h5", "w") as f:
f["mat"] = numpy.array([1.0 + .5j, 2.0 - 1.0j], dtype=complex)
HDF5 没有复数的原生概念,因此 h5py
将它们存储为复合数据类型,其中“r”和“i”字段表示实部和虚部。
如何使用 HDF5.jl
在 Julia 中加载此类复数数组?
编辑:明显的尝试
using HDF5
h5open("test.h5", "r") do fd
println(read(fd, "mat"))
end
返回一个神秘的响应:
HDF5Compound(Uint8[0,0,0,0,0,0,240,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,240,191],Type[Float64,Float64],ASCIIString["r","i"],Uint64[0,8])
最佳答案
正如 @simonster 指出的,有一种快速且安全的方法可以做到这一点。
如果你写的是:
a = read(fd, "mat"))
那么你想要的复数向量就是:
cx_vec = reinterpret(Complex{Float64}, a.data)
关于hdf5 - 如何在 Julia 中读取复杂的 HDF5 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227223/