file - Julia - 使用 readdlm 指定类型

标签 file types io julia

我有一个包含小数字的大文本文件,我需要使用 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/

相关文章:

java - 使用 .mov 文件到字节数组

file - 如何在 Java/JavaFX 中定位一个文件(它的路径)

java - 如何将具有泛型的类型转换为java中的类?

java - 如何从文件中检索数据

c# - 对多个文件副本使用多线程

java - 创建吞吐量有限的 OutputStream

javascript - Modal moSTLy 保持立即退出

c++ - Visual C++ 2010 - 转换 10 GB BYTE 数组的最快方法?

c++ - 如何将类型删除技术应用于现有类型?

javascript - 为什么在确定类型相等时使用 ===?