gpt4 book ai didi

arrays - 在 Julia 的单个数据框中保存不同长度的数组

转载 作者:行者123 更新时间:2023-12-05 03:07:59 24 4
gpt4 key购买 nike

我想保存输出可变长度数组的模拟结果。通常我会运行模拟,将其保存在一个数组中,将它与一个包含先前结果的数组连接起来,然后通过制作一个数据框然后使用 CSV.write 来保存包含所有结果的数组。但是,由于数组的长度可变,hcat() 将不起作用。下面是我想做的玩具示例。

output = zeros(5)
number_simulations = 10
for i = 1:number_simulations
l = sample([4, 5, 6, 7])
print(l)
for j = 1:l
new_out = zeros(l)
hcat(output, new_out)
end
end
df = convert(DataFrame, output)
CSV.write("out.csv", df)

返回错误

DimensionMismatch("vectors must have same lengths").

是否有一个简单的解决方法可以让我在一个单独的列中包含每个模拟结果的文件?

最佳答案

这里的最佳实践可能是只使用“高”/“长”/“整洁”数据集,在其中将模拟数字存储在一个向量中,垂直堆叠的结果存储在另一个向量中(可能还有索引在第三)。

但是为了实现您的目标,我只是将输出直接存储到 DataArray 的向量中。然后你可以将它们的大小调整为最后最大的一个:

julia> output = DataVector{Float64}[]
number_simulations = 10
for i = 1:number_simulations
l = sample([4, 5, 6, 7])
print(l)
for j = 1:l
push!(output, zeros(l)) # This converts the array to a DataVector
end
end
5746656565
julia> resize!.(output, maximum(length, output))
DataFrame(output)
7×55 DataFrames.DataFrame
│ Row │ x1 │ x2 │ x3 │ x4 │ x5 │ x6 │ x7 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ 1 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 2 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 3 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 4 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 5 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │ 0.0 │
│ 6 │ NA │ NA │ NA │ NA │ NA │ 0.0 │ 0.0 │
│ 7 │ NA │ NA │ NA │ NA │ NA │ 0.0 │ 0.0 │


关于arrays - 在 Julia 的单个数据框中保存不同长度的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303713/

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