gpt4 book ai didi

csv - Julia :如何从文本文件(csv 与 'columns' 的数量不相等)导入图表?

转载 作者:行者123 更新时间:2023-12-04 14:38:43 25 4
gpt4 key购买 nike

我想知道是否有人知道从格式如下例(我将命名为“graph.csv”)的文本文件中导入 Julia 图形的简洁方法:

1,6,7,3
2,5
3,9,8

因此,这些行具有非固定数量的条目 (>1)。如果我天真地使用 readdlm(),我会得到一个包含空字符串条目的矩阵:

readdlm("graph.csv", ',', '\n')

# 3x4 Array{Any,2}:
# 1.0 6.0 7.0 3.0
# 2.0 5.0 "" ""
# 3.0 9.0 8.0 ""

我有两个问题。首先,我不喜欢使用超出需要的内存。其次,由于字段为空,我无法将行解释为整数数组,即 readdlm("graph.csv", ',', Int, '\n') 不起作用。

我现在导入图表的方式使用两个步骤。首先,我将每一行作为一个字符串导入,然后我将每一行解析为整数:

graph_strings = readdlm("graph.csv", '\n')

graph = map(line -> map(parseint, split(line,',')), graph_strings)

# 3x1 Array{Array{Int64,1},2}:
# [1,6,7,3]
# [2,5]
# [3,9,8]

另一种更“Matlabby”的方法是使用Any 数组:

graph_strings = readdlm("graph.csv",'\n')

graph = {map(parseint, split(graph_strings[i],',')) for i=1:length(graph_strings)}

# 3-element Array{Any,1}:
# [1,6,7,3]
# [2,5]
# [3,9,8]

我的问题有两个:

<强>1。有更好的方法吗?

<强>2。如果不是,上述两种导入方式中的哪一种更适合大图?

谢谢!

最佳答案

我认为 readdlm 不适合此数据,它本质上不是表格。

我的方法是

f = open("graph.csv","r")
adjlist =
while !eof(f)
push!(adjlist, map(int, split(chomp(readline(f)),",")))
end
close(f)

产生

julia> adjlist
3-element Array{Array{Int64,1},1}:
[1,6,7,3]
[2,5]
[3,9,8]

关于csv - Julia :如何从文本文件(csv 与 'columns' 的数量不相等)导入图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26869953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com