使用Julia HDF5以numpy轴顺序读取HDF5数据

Sea*_*sey 5 hdf5 julia

我有一个HDF5文件,其中包含使用Python/numpy保存的数组.当我使用HDF5.jl将它们读入Julia时,轴与它们在Python中出现的顺序相反.为了减少在Python和Julia代码库之间移动所涉及的心理体操,当我将数据读入Julia时,我颠倒了轴顺序.我已经编写了自己的函数来执行此操作:

function reversedims(ary::Array)
  permutedims(ary, [ ndims(ary):-1:1 ])
end

data = HDF5.read(someh5file, somekey) |> reversedims
Run Code Online (Sandbox Code Playgroud)

这并不理想,因为(1)我总是要输入reversims来使用它; (2)我必须记住每次Array阅读都要这样做.我想知道是否有可能:

  • 指示HDF5.jl使用numpy样式的轴顺序读取数组,通过关键字参数或某种全局配置参数
  • 使用内置单参数函数来反转轴

use*_*829 0

在我看来,这就像排列!执行您正在寻找的操作,但它确实执行数组复制。如果你可以用 python 重写 hdf5 文件,numpy.asfortranarray声称返回以列主格式存储的数据,尽管numpy 内部文档似乎表明数据没有改变,只是步幅改变了,所以我不这样做不知道 hdf5 文件输出是否会有所不同

编辑:抱歉,我刚刚看到您已经permutedims在您的函数中使用了。我在 Julia 方面找不到任何其他内容,但我仍然会尝试看看numpy.asfortranarray是否有帮助。