一种类似数组或向量的类型,其值存储在Julia中的磁盘上
我正在寻找具有以下属性的类似数组的类型:一种类似数组或向量的类型,其值存储在Julia中的磁盘上,julia,Julia,我正在寻找具有以下属性的类似数组的类型: 将元素存储在磁盘上 元素可以具有复合类型 元素被读入内存,而不是整个数组 可以在不写入整个数组的情况下写入单个元素 支持setindex,getindex,推送,弹出,shift,取消移位和可能vcat 这是相当有效的 到目前为止,我发现了以下线索: 第一个似乎很有希望,但似乎元素的类型必须是isbits(意味着一个简单的数字,一些结构,但不是,例如数组{Float64,1})。而且还不清楚整个数组内容是否加载到内存中 如果它还不存在,我当然会
- 将元素存储在磁盘上
- 元素可以具有复合类型
- 元素被读入内存,而不是整个数组
- 可以在不写入整个数组的情况下写入单个元素
- 支持
setindex代码>,
,getindex
推送代码>,
弹出代码>,
shift代码>,
取消移位代码>和可能
vcat
- 这是相当有效的
isbits
(意味着一个简单的数字,一些结构,但不是,例如数组{Float64,1}
)。而且还不清楚整个数组内容是否加载到内存中
如果它还不存在,我当然会尝试自己构建它。NCDatasets.jl解决了部分需求:
- 在磁盘上存储元素:是
- 元素可以具有复合类型:否(尽管NetCDF4中有一些对复合类型的支持,但NCDatasets.jl中还没有)。目前,您只能有基本类型的数组和(基本类型的)向量数组
- 元素被读入内存,而不是整个数组:是
- 可以在不写入整个数组的情况下写入单个元素支持setindex!,获取索引,推!,砰!,轮班!,放开!也许vcat:只需设置索引!,获取索引
- 效率合理:效率对我来说是合理的:-)
- HDF5(用于存储、跨平台和跨语言)
- JLD2(JLD的继任者)
- rasdaman(阵列的“数据库”)
- 也可能是BSON
也许你也可以联系JuliaIO集团。
isbits
并不意味着它不能合成。它只是意味着它必须是一个isbits
类型的struct
,就像一个struct
,有几个复数和一个Int
。感谢您指出这一点。我编辑了这个问题,我希望它现在是正确的。这不就是为什么吗?我可以mmap
一个固定大小的多维数组,但是它不可能用于例如array{array{Float64,1},1}
,其中内部数组的大小是可变的。不过,这可能仍然是最好的解决方案!