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

标签 arrays object julia

我想在 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/

相关文章:

delphi - 当我直到运行时才知道长度时,如何声明数组?

php - 将 CSS 拆分为多维数组

javascript - ReactFire - 将 Firebase 绑定(bind)到 React 状态时获取 'Objects are not valid as a React child'

javascript - 对象函数不是函数

dictionary - Julia-Lang 元编程 : turn expression into function with expression-dependent arguments

c - 需要帮助使用 qsort 对 C 中的结构数组进行排序

php - 包含带有数字键的数组失败

java - 当从类创建对象时,公共(public) Java 方法实际上会被复制到新对象中吗?

julia - 使用 StaticArrays 赋值时如何实现类型稳定性?

dataframe - 使用 Julia,我如何读取多个 CSV 并合并列