在Julia中将文件读入1维数组

4

我有一个非常简单的数字文本文件,看起来像这样:

0
1.57
3.14

这个例子有3个数字,但数量可以任意。我想将它们读入到一个Float 64的1d数组中,因此我尝试了以下方法。

function read_x_data(fname)
  f=open(fname)
  xarr=readdlm(f, Float64)
  print(xarr)
  xarr=sortperm(xarr)   
end

然而,我遇到了一个错误:sortperm没有匹配方法sortperm(::Array{Float64, 2})。我不明白为什么会出现这种情况 - 我该如何将我的数据读入一个一维数组呢?我在Julia中逐行阅读看到了一个类似的问题,但我认为像这样使用n次推送非常低效,是吗?非常感谢您对我的问题或建议提供建议。谢谢!
2个回答

2
如果您的意图是对数据进行排序,那么这可能适合您。
read_x_data(fname) = sort!(vec(readdlm(fname,Float64)))

2
回答你的问题: vec 可以将任何数组转换为一维向量。 sortperm 返回排列但不返回原始数据;因此,即使你添加了 vec(xarr),也会丢失数据。你可能想要使用 sort
最后,在 Julia 中,push! 不是低效的。你可能根据其他语言(如 Matlab)的经验期望它效率低下,但在 Julia 中,你可以高效地扩展一维数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接