我有一个小数字的大文本文件,我需要使用Julia导入。一个玩具例子是
7
31 16
90 2 53
我找到雷丁了。当我转到a= readdlm("FileName.txt")时,它可以工作,但是得到的数组类型为Any,由此产生的计算非常慢。我试图将类型指定为int或特别是Int16,但失败了。
我怎样才能正确地做到这一点?另外,如果我使用readdlm,是否必须关闭该文件。
发布于 2016-06-16 10:13:53
当您指定类型时,玩具示例会给出错误,因为其中有一些缺失的值。这些缺失的值在Julia中作为字符串处理,因此表的类型最终将是Any,因为readdlm无法确定这些值是否为数字/字符值。Row1只有一个值,而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 53Readdlm为您关闭文件,所以您不必担心这个问题。
https://stackoverflow.com/questions/37855120
复制相似问题