将 CSV 文件导入为矩阵

K. *_*son 2 csv julia

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

\n\n

文件.csv

\n\n
-1.838713563526794E-8;-1.863045549663876E-8;-2.334704481052452E-8 ...\n-1.7375447279939282E-8;-1.9194929690414267E-8;-2.0258124812468942E-8; ...\n\xe2\x8b\xae\n-1.1706980663321613E-8;-1.6244768693064608E-8;-5.443335580296977E-9; ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n

Bog*_*ski 6

您可以使用

using DelimitedFiles
m = readdlm("./file.csv", ';', Float64)
Run Code Online (Sandbox Code Playgroud)

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

  • @K.Claesson 文件可能有问题,开头是 BOM。将文件保存为无 BOM 的 UTF8 可以使其与“readdlm”一起使用。 (2认同)

And*_*K11 6

2022答案

不确定是否有更改CSV.jl,但是,如果我CSV.read("file.csv")这样做就会出错

provide a valid sink argument, like 'using DataFrames; CSV.read(source, DataFrame)'
Run Code Online (Sandbox Code Playgroud)

然而,您可以利用它需要任何兼容类型的事实Tables.jl

using CSV, Tables
M = CSV.read("file.csv", Tables.matrix, header=0)
Run Code Online (Sandbox Code Playgroud)