hdf5 - 如何在 Julia 中读取复杂的 HDF5 数组?

标签 hdf5 julia

我有许多包含复数数组的 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/

相关文章:

numpy - Object dtype dtype ('O' ) 没有本地 HDF5 等效项

c - 如何在Mac OS X的C程序中包含hdf5头文件?

python - Pytables/Pandas : Combining (reading? ) 多个 HDF5 存储按行拆分

python - 在不删除其他组和数据集的情况下将更多数据集附加到现有 Hdf5 文件中

c++ - 从 HDF5 读取 QString

dataframe - 如何将大型 julia DataFrame 分区为箭头文件并在读取数据时按顺序处理每个分区

arrays - Julia 中随机输出的数组理解

julia - Julia 散点图中的大小和颜色

tuples - 如何在 Julia 中填充元组?

julia - 在 julia 1.1.0 中合并默认和自定义文档字符串?