小编Tim*_*imD的帖子

具有指定分布的随机数据中的类型不稳定性

我想从带有噪声的线性模型 (Y = X*w + e) 生成数据,我可以在其中指定输入向量 X 和标量噪声 e 的分布。为此,我指定了以下结构

using Distributions

struct NoisyLinearDataGenerator
    x_dist::ContinuousMultivariateDistribution
    noise_dist::ContinuousUnivariateDistribution
    weights::Vector{Float64}
end
Run Code Online (Sandbox Code Playgroud)

以及从中生成 N 个点的函数:

function generate(nl::NoisyLinearDataGenerator, N)
    x = rand(nl.x_dist, N)'
    e = rand(nl.noise_dist, N)
    return x, x*nl.weights + e
end
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但类型不稳定,因为

nl = NoisyLinearDataGenerator(MvNormal(5, 1.0), Normal(), ones(5))

@code_warntype generate(nl,1)
Run Code Online (Sandbox Code Playgroud)

产量

Variables
  #self#::Core.Compiler.Const(generate, false)
  nl::NoisyLinearDataGenerator
  N::Int64
  x::Any
  e::Any

Body::Tuple{Any,Any}
1 ? %1  = Base.getproperty(nl, :x_dist)::Distribution{Multivariate,Continuous}
?   %2  = Main.rand(%1, N)::Any
?         (x = Base.adjoint(%2))
?   %4  = Base.getproperty(nl, :noise_dist)::Distribution{Univariate,Continuous}
?         (e = …
Run Code Online (Sandbox Code Playgroud)

julia

4
推荐指数
1
解决办法
47
查看次数

选择缺少值的Julia DataFrame的数字列

我想选择DataFrame的所有列,其中数据类型是的子类型Number。但是,由于存在带有missing值的列,因此数字列数据类型可能类似于Union{Missing, Int64}

到目前为止,我想到了:

using DataFrames

df = DataFrame([["a", "b"], [1, missing] ,[2, 5]])

df_numerical = df[typeintersect.(colwise(eltype, df), Number) .!= Union{}]
Run Code Online (Sandbox Code Playgroud)

这产生了预期的结果。

有没有更简单,惯用的方式来做到这一点?可能类似于:

df.select_dtypes(include=[np.number])
Run Code Online (Sandbox Code Playgroud)

以大熊猫为,取自这个问题的答案?

dataframe julia

3
推荐指数
1
解决办法
273
查看次数

标签 统计

julia ×2

dataframe ×1