在 Julia 结构中预处理数据

问题描述 投票:0回答:1

我想要一个 Julia 结构,其中包含数据和参数,以便与各种函数一起使用。例如,我从数字数据框开始,但许多函数将其用作矩阵,并且还需要知道其维度。在 python 中我会使用类似的东西:

class my_class(object):
    def __init__(self, df):
        X = df.to_numpy()
        self.n, self.m = X.shape
        row_names = df.index.tolist()
        col_names = df.columns.tolist()

Foo = my_class(df)

难点在于

.to_numpy()
.shape
等操作是否可以在Julia结构中执行或者是否可以预先执行。或者这可能需要使用可变结构?

以我目前的知识水平,我会做这样的事情:

struct MyClass
    df::DataFrame
    X::Matrix{Float64}
    n::Int64
    m::Int64
    row_names::Vector{String}
    col_names::Vector{String}
end

X = Matrix{Float64}(df[:,begin+1:end])
n, m = size(X)
row_names = df[:,begin]
col_names = names(SAT[:,begin+1:end])

Foo = MyClass(df, X, n, m, row_names, col_names)

备注:想想看,我可能可以将上面的代码包装在一个函数中,该函数返回初始化的结构体 Foo。但这似乎是一种复杂的做法。

python class data-structures struct julia
1个回答
0
投票

Julia 网站上提出这个问题并浏览了 Julia constructors 上的建议阅读内容后,我认为答案应该如下:

struct MyClass
    df::DataFrame
    X::Matrix{Float64}
    n::Int64
    m::Int64
    row_names::Vector{String}
    col_names::Vector{String}
    function MyClass(df::DataFrame)
        X = Matrix{Float64}(df[:,begin+1:end])
        n, m = size(X)
        row_names = df[:,begin]
        col_names = names(SAT[:,begin+1:end])
        new(df, X, n, m, row_names, col_names)
    end
end

Foo = MyClass(df)
© www.soinside.com 2019 - 2024. All rights reserved.