我有一个带有小数字的大文本文件,我需要使用Julia导入。 玩具的例子是
7
31 16
90 2 53
我找到了readdlm。我走的时候 a = readdlm(“FileName.txt”) 它的工作原理,但结果数组的类型为Any,结果计算结果非常慢。 我已经尝试过并且没有将类型指定为int或特别是Int16。
我该如何正确地做到这一点? 另外,如果我使用readdlm,我是否必须关闭该文件。
答案 0 :(得分:7)
如果你指定了类型,你的玩具示例会给你错误,因为那里有一些缺失的值。这些缺失值在Julia中作为字符/字符串处理,因此表格的类型最终为Any
,因为readdlm
无法确定这些是否为数字/字符值。 Row1只有1个值,而row2有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为您关闭文件,因此您不必担心。