导入CSV文件作为矩阵

时间:2019-04-17 22:24:43

标签: csv julia

我想导入CSV文件(file.csv)作为Julia中的矩阵,以使用GR将其绘制为热图。我的CSV文件包含255行,每行255个条目。以下是CSV文件中的一些示例,用于说明行的格式:

file.csv

-1.838713563526794E-8;-1.863045549663876E-8;-2.334704481052452E-8 ...
-1.7375447279939282E-8;-1.9194929690414267E-8;-2.0258124812468942E-8; ...
⋮
-1.1706980663321613E-8;-1.6244768693064608E-8;-5.443335580296977E-9; ...

注意:省略号(...)不是CSV文件的一部分,而是表示省略了整个部分。

我尝试使用下面的行m = CSV.read("./file.csv")将文件作为矩阵导入,但这会导致255 x 1的向量,而不是255 x 255的矩阵。有谁知道在Julia中将CSV文件作为矩阵导入的有效方法?

2 个答案:

答案 0 :(得分:3)

您可以使用

using DelimitedFiles
m = readdlm("./file.csv", ';', Float64)

(如果需要Float64,可以省略最后一个指定类型的参数)

答案 1 :(得分:3)

m = CSV.read("./file.csv")返回一个DataFrame

如果CSV.jl正确读取了文件,因此m的所有列均为Float64类型,不包含missing,则可以转换m到具有Float64的{​​{1}}矩阵,或获得一行的矩阵:

Matrix{Float64}(m)
但是,

m = Matrix{Float64}(CSV.read("./file.csv", header=0, delim=';')) # or with piping syntax m = CSV.read("./file.csv", header=0, delim=';') |> Matrix{Float64} 通常应该足够,并且是解决像您这样的简单CSV文件的第一个解决方案。