gpt4 book ai didi

file - Julia - 使用 readdlm 指定类型

转载 作者:行者123 更新时间:2023-12-01 09:03:45 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com