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

时间:2014-07-18 18:47:02

标签: arrays file input multidimensional-array julia

我有一个非常简单的文本文件只是看起来像 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})。我不明白为什么会这样 - 我怎样才能将我的数据读入1d数组呢?我在Reading line by line in Julia看到了类似的问题,但我相信使用n次这样的效率是非常低效的,对吧?任何有关我的问题或建议的帮助非常感谢。谢谢!

2 个答案:

答案 0 :(得分:2)

要回答您的直接问题:vec会将任何数组重新整形为1d向量。

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

最后,在朱莉娅push!效率不高。您可能期望使用其他语言(Matlab?)的经验效率低下,但在Julia中,您可以有效地增长1d数组。

答案 1 :(得分:2)

如果您打算对数据进行排序,这可能对您有用。

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