我有一个非常简单的文本文件,只是数字看起来像
0
1.57
3.14
这个例子有3个数字,但是数量可以。我试图将它们读入Float 64的一维数组中,所以我尝试了以下方法。

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


但是,我得到一个错误,即sortperm没有匹配的方法sortperm(:: Array {Float64,2})。我不明白为什么会这样-我该如何将数据读取到一维数组中?我在Reading line by line in Julia处遇到了类似的问题,但我相信使用n次这样的push效率很低,对吗?非常感谢我的问题或建议。谢谢!

最佳答案

要回答您的紧迫问题:vec会将任何数组重塑为一维向量。

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

最后,在Julia中,push!效率不低。您可能期望从使用另一种语言(Matlab?)获得的经验效率不高,但是在Julia中,您可以有效地生长一维数组。

08-16 12:39