我有一个包含小数字的大文本文件,我需要使用 Julia 导入它。 一个玩具示例是
7
31 16
90 2 53
我找到了 readdlm。我去的时候 a = readdlm("文件名.txt") 它可以工作,但是生成的数组是 Any 类型的,并且生成的计算非常慢。 我已尝试将类型指定为 int 或具体为 Int16,但未能成功。
我该如何正确地做到这一点? 另外,如果我使用 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 会为您关闭文件,所以您不必担心。
关于file - Julia - 使用 readdlm 指定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37855120/