保存数组,HDF5,Julia数组

时间:2019-11-21 21:24:24

标签: julia hdf5

交叉发布的here,但是如何使用HDF5在Julia中保存数组数组?

在我的特殊情况下,我有一个包含10,000个长度不同的数组的数组。我希望将10,000个数组作为“组”的一部分,但是为每个数组创建新的数据集/组会使读取文件非常缓慢,因此我正在寻找一种替代方法。

1 个答案:

答案 0 :(得分:2)

您可以将数组的数组展平为一个单独的数组,其中一列包含原始数据,另一列表示该数据最初来自第i个数组。

using HDF5
# Define your array of arrays.
arr = [[1,2],[3,4,5]]

# Open your hdf5 file
h5open("data.hdf5", "w") do f
    # Create a dataset with the length of all your arrays combined.
    N = sum(length.(arr))
    d_create(f, "X", Int, ((2,N),(2,-1)), "chunk", (1,1000))

    n = 1
    for i in 1:length(arr)
        m = length(arr[i])
        f["X"][1, n:n+m-1] = fill(i, m)
        f["X"][2, n:n+m-1] = arr[i]
        n+=m
    end
    print(f["X"][:,:])
end

然后将数组存储如下:

> [1 1 2 2 2; 1 2 3 4 5]