我正在使用Win10上的Julia1.4.2处理输出节省问题,我尝试了几种参考docs的方法。但对我来说什么都不管用。我要保存的输出如下所示
julia> sim_result
GpABC.SimulatedABCRejectionOutput(3, 1465, 20000, 1.0, [4.5398045285832636 16.341298256602684 0.8528241692701137; 2.2014098882111117 11.88704704892733 1.8060482719350048; … ; 3.4569125171576727 14.206295598447817 1.2527525901911478; 1.1086538611233734 16.95205292134931 0.7814523160265465], [0.8718784407104312, 0.9897439825224637, 0.7361435718656393, 0.7863129137954922, 0.8097276891293583, 0.7167559341428585, 0.6600858843737456, 0.7420732257406872, 0.8085779131629843, 0.7603566788770011 … 0.9172504543539195, 0.5578993725435081, 0.8377191750525664, 0.7847440234430122, 0.6465487321194205, 0.716785821691151, 0.2596989086130145, 0.7210284576525666, 0.9855259563757373, 0.5775313512469311], [0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899 … 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899, 0.0006825938566552899])
它的结构是GpABC.SimulatedABCRejectionOutput(::Int64, ::Int64, ::Int64, ::Float64, ::AbstractArray{Float64,2}, ::AbstractArray{Float64,1}, ::StatsBase.Weights)
,我想把这个::AbstractArray{Float64,2}
保存到TXT或CSV文件中。
发布于 2021-04-20 12:36:55
很高兴提供这个作为实际答案-如果你在多个地方发帖,交叉引用总是很好的,我在这里错过了这一点。
步骤1:了解如何访问数组-它将是sim_result
对象的一个字段,您可以使用fieldnames
来了解这种类型的字段是如何调用的。您需要使用typeof(sim_result)
,因为fieldnames
对类型进行操作。
julia> fieldnames(typeof(sim_result))
(:n_params, :n_accepted, :n_tries, :threshold, :population, :distances, :weights)
这告诉您可以作为sim_result.population
访问该数组。
步骤2:如何将数组写入txt或csv?最简单的解决方案是使用DelimitedFiles
标准库,它可以将分隔文件写入文本:
julia> using DelimitedFiles
julia> writedlm("output.txt", sim_result.population)
或者,如果要编写csv文件,则应使用CSV
包,该包需要安装在当前环境中。然后您可以执行以下操作:
julia> using CSV
julia> CSV.write(output.csv", (data = sim_result.population, ))
注意,(data = sim_result.population, )
中的逗号创建了一个NamedTuple
,它是Julia中最简单的表兼容对象( CSV
库需要一个表作为CSV.write()
的参数)
https://stackoverflow.com/questions/67172535
复制