gpt4 book ai didi

arrays - 如何在 Julia 中以树状结构存储数据

转载 作者:行者123 更新时间:2023-11-30 23:55:28 25 4
gpt4 key购买 nike

我想在 Julia 中处理高频财务数据时将其存储在内存中。

我的数据在很多 Float64 数组中。为了安全起见,每个阵列都存储某一天的高频数据。例如,对于在 NYSE(纽约证券交易所)上市的 IBM,日期 2010-01-04,有一个 Float64 数组。

如前所述,我有许多这样的数组,跨越多个日期、市场和证券。我想将它们全部存储在一个对象中,以便轻松检索任何给定数组(可能利用元数据的树状结构)。

在Matlab中,我曾经将其存储在一个结构中,其中第一层是市场,下一层是安全,再下一层是日期,然后树的末尾是相应的数组。在每个级别,我还存储了该级别的字段列表。

Julia doesn't really have an equivalent to Matlab structures ,那么在 Julia 中执行此操作的最佳方法是什么?

目前,我能想出的最好办法是一系列嵌套的复合类型,每个类型都有两个字段。例如:

type HighFrequencyData
dateList::Array{Date, 1}
dataArray::Array{Any, 1}
end

其中 dateList 存储日期列表,这些日期对应于 dataArray 中保存的 Float64 数组序列(即 dateList dataArray 将具有相同的长度)。然后:

type securitiesData
securityList::Array{String, 1}
highFrequencyArray::Array{Any, 1}
end

其中 securityList 存储与 highFrequencyArray 中保存的 HighFrequencyData 类型序列相对应的证券列表。然后:

type marketsData
marketList::Array{String, 1}
securitiesArray::Array{Any, 1}
end

其中 marketList 存储与 securitiesArray 中保存的 securitiesData 类型序列相对应的市场列表。

鉴于此,所有数据现在都可以存储在 marketsData 类型的变量中,并使用 marketListsecurityList 进行查找code>dateList,在嵌套的每一层。

但是这样感觉有点麻烦...

最佳答案

您的类型层次结构看起来不错,但也许您只需要字典?

all_data = ["Market1" => {
["Sec1" => {[20140827, 20140825], [1.05, 10.6]}],
["Sec2" => {[20140827, 20140825], [1.05, 10.6]}]},
"Market2" => {
["Sec1" => {[20140827, 20140825], [1.05, 10.6]}],
["Sec2" => {[20140827, 20140825], [1.05, 10.6]}]},
...]

println(all_data["Market1"]["Sec1"] ./ all_data["Market2"]["Sec1"])

如果您可以发布 MATLAB 代码的样子,那也可能会有帮助。

我会稍微重新表述你的类型,也许更简单一些,比如

type TimeSeries
dates::Vector{Date}
data::Vector{Any}
end

typealias Security (String,TimeSeries)
typealias Market Vector{Security}

markets = Market[]

push!(markets, [("Sec1",TimeSeries(...)), ("Sec2",TimeSeries(...)])

此外,请务必查看 https://github.com/JuliaStats/TimeSeries.jl

关于arrays - 如何在 Julia 中以树状结构存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com