在 Julia 中将数组导出到 CSV 文件
Posted
技术标签:
【中文标题】在 Julia 中将数组导出到 CSV 文件【英文标题】:Export an array to a CSV file in Julia 【发布时间】:2019-03-24 19:26:31 【问题描述】:给定一个 (2d) 数组 A
如何使用 Julia 将其导出为 CSV 文件?
回到旧版本,我会写
writecsv( "FileName.csv", A);
这会将数组 A 转储到给定文件中。但是,这在 >= 1.0 版本中不起作用。经过一番谷歌搜索,我也尝试使用 CSV 模块做
f = open("test.csv", "a+");
CSV.write(f, A; delim = ',')
但这会引发错误
ERROR: ArgumentError: no default `Tables.rows` implementation for type: ArrayInt64,2
(我的数组 A 是 Int64 类型)。
对于这个最琐碎的问题,有人有可行的解决方案吗?
【问题讨论】:
【参考方案1】:需要加载DelimitedFiles
模块,现在只支持writedlm
功能。
因此,为了将数组写入 CSV 文件,请使用:
julia> using DelimitedFiles
julia> writedlm( "FileName.csv", A, ',')
要使用 CSV.jl 包获得相同的结果,请使用:
julia> using CSV, Tables
julia> CSV.write("FileName.csv", Tables.table(A), writeheader=false)
因为Matrix
不支持Tables.jl 接口,所以你需要用Tables.table
包装它。
【讨论】:
不确定这是否总是需要,但请注意您可能必须添加:auto
参数,如 DataFrame(A, :auto)
。 Bogumił,这是较新的做法吗?谢谢。引用:“Matrix
中的DataFrame
构造函数需要传递 :auto 作为第二个参数来自动生成列名:DataFrame(matrix, :auto)
”
是的,现在需要:auto
。我用当前推荐的做法更新了答案 - Tables.table
不会复制。以上是关于在 Julia 中将数组导出到 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 2008 中将查询结果导出到 .csv 文件