我有一个非常简单的文本文件,只是数字看起来像
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中,您可以有效地生长一维数组。