在Julia中,使用CSV.jl
可以读取一个.csv
文件的DataFrame:
using CSV
df = CSV.read("data.csv", delim=",")
但是,我如何才能将CSV文件读取为Vector{Float64}
数据类型?
答案 0 :(得分:4)
您可以使用stdlib中的DelimitedFiles
模块:
julia> using DelimitedFiles
julia> s = """
1,2,3
4,5,6
7,8,9"""
"1,2,3\n4,5,6\n7,8,9"
julia> b = IOBuffer(s)
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=17, maxsize=Inf, ptr=1, mark=-1)
julia> readdlm(b, ',', Float64)
3×3 Array{Float64,2}:
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
我正在向您展示从IOBuffer
读取的示例,它具有完全可重复性,但是您也可以从文件读取数据。在readdlm
的文档字符串中,您可以找到有关可用选项的更多详细信息。
请注意,您将获得Matrix{Float64}
而不是Vector{Float64}
,但我知道这就是您想要的。如果不是这样,则为了将矩阵转换为向量,可以在读取数据后在其上调用vec
函数。
答案 1 :(得分:4)
您可以将DataFrame
转换为特定类型的Matrix
。如果没有丢失的数据,这应该起作用。如果缺少数据,只需在convert
中省略类型。
arr = convert(Matrix{Float64}, df)
如果确实是您想要的,您可以在结果上调用vec
以获取向量。
根据文件的不同,我将按照上一个答案中的建议使用readdlm
。
答案 2 :(得分:0)
要总结 Bogumil 的回答,您可以使用:
using DelimitedFiles
data = readdlm("data.csv", ',', Float64)