在Julia中,将文件读入1d数组



我有一个非常简单的文本文件,只有数字,看起来像01.573.14这个例子有3个数字,但数量是可以的。我试图将这些读取到浮点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的逐行阅读中看到了一个类似的问题,但我相信像这样使用push n次是非常低效的,对吧?任何帮助我的问题或建议都非常感激。谢谢!

回答你的直接问题:vec将重塑任何数组为一维向量。

sortperm返回序列,但不返回原始数据;因此,即使您添加了vec(xarr),也会丢弃数据。您可能需要sort

最后,在Julia中push!不是低效的。从使用另一种语言(Matlab?)的经验来看,您可能期望它效率低下,但在Julia中,您可以有效地增长1d数组。

如果您的目的是对数据进行排序,那么这可能适合您。

read_x_data(fname) = sort!(vec(readdlm(fname,Float64)))

相关内容

  • 没有找到相关文章

最新更新