File Julia-使用readdlm指定类型
我有一个小数字的大文本文件,需要使用Julia导入。 一个玩具的例子是 七, 31 16 90253 我找到了readdlm。我走的时候 a=readdlm(“FileName.txt”) 它可以工作,但是生成的数组是任意类型的,并且生成的计算速度非常慢。 我尝试过将类型指定为int或具体指定为Int16,但失败 我如何正确地做到这一点?File Julia-使用readdlm指定类型,file,types,io,julia,File,Types,Io,Julia,我有一个小数字的大文本文件,需要使用Julia导入。 一个玩具的例子是 七, 31 16 90253 我找到了readdlm。我走的时候 a=readdlm(“FileName.txt”) 它可以工作,但是生成的数组是任意类型的,并且生成的计算速度非常慢。 我尝试过将类型指定为int或具体指定为Int16,但失败 我如何正确地做到这一点? 另外,如果我使用readdlm,我是否必须关闭该文件。如果您指定类型,您的玩具示例将显示错误,因为其中缺少一些值。这些缺少的值在Julia中作为字符/字符串处
另外,如果我使用readdlm,我是否必须关闭该文件。如果您指定类型,您的玩具示例将显示错误,因为其中缺少一些值。这些缺少的值在Julia中作为字符/字符串处理,因此表的类型最终将是
Any
,因为readdlm
无法确定这些值是否为数字/字符值。第1行只有1个值,而第2行有2个值,以此类推,这将为您提供缺少的值
如果文本文件中的所有数据都很清晰,您可以在readdlm
中设置表的类型:
int_table = readdlm("FileName2.txt", Int16)
int_table
3x3 Array{Int16,2}:
7 0 0
31 16 0
90 2 53
其中FileName2.txt
是:
7 0 0
31 16 0
90 2 53
但是,如果数据缺少值,则需要将它们转换为一些数值,或者使用DataFrames
包来处理它们。我在这里假设您想要一个纯整数数组,所以我用0填充值:
any_table = readdlm("FileName.txt")
any_table
3x3 Array{Any,2}:
7 "" ""
31 16 ""
90 2 53
# fill missing values with 0
any_table[any_table .== ""] = 0
# convert to integer table
clean_array = Array{Int16}(any_table)
clean_array
3x3 Array{Int16,2}:
7 0 0
31 16 0
90 2 53
Readdlm为您关闭文件,因此您不必担心。您是否尝试过
Readdlm
的任何选项:Readdlm(source,delim::Char,t::Type,eol::Char;header=false,skipstart=0,skipblanks=true,use_mmap,ignore_invalid_chars=false,quotes=true,dims,comments=true,comment_Char='.\35;)
。我在打电话,所以现在不能测试它们。最棒的是niczky12。洛格斯皮莱。如果你觉得这回答了你的问题,请随意将其标记为已接受。