我有一个包含由Python/numpy保存的数组的HDF5文件。当我使用HDF5.jl将它们读入Julia时,轴的顺序与它们在Python中出现的顺序相反。为了减少在Python和Julia代码库之间移动时所需的思维运动量,我在将数据读入Julia时反转轴的顺序。我编写了自己的函数来完成这个过程:
function reversedims(ary::Array)
permutedims(ary, [ ndims(ary):-1:1 ])
end
data = HDF5.read(someh5file, somekey) |> reversedims
这不是理想的解决方法,因为(1)我必须每次导入 reversedims
才能使用它;(2)我必须记住为每个读取的 Array
进行此操作。我想知道是否有可能通过关键字参数或某种全局配置参数来指示 HDF5.jl 以 NumPy 风格的轴顺序读取数组,或者使用内置的单参数函数来反转轴。
- 指示 HDF5.jl 使用 NumPy 风格的轴顺序读取数组,可以通过关键字参数或某种全局配置参数来实现
- 也可以使用内置的单参数函数来反转轴
permutedims
(没有!
版本)不会进行数组复制。而改变步幅就是交换维度的意思,也许我混淆了。 - Sean Mackeseypermutedims
函数。我看了这个线程,发现避免使用permutedims
的方法是重新排列步幅和维度。这是否对非复制的permutedims
有任何好处还有待商榷。这就是具有不同内部数组结构的语言的本质,你必须在一侧或另一侧进行转换。你试过numpy.asfortranarray
吗? - user3288829