我有一个非常简单的文本文件只是看起来像 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次这样的效率是非常低效的,对吧?任何有关我的问题或建议的帮助非常感谢。谢谢!
答案 0 :(得分:2)
要回答您的直接问题:vec
会将任何数组重新整形为1d向量。
sortperm
返回排列但不返回原始数据;因此,即使您添加了vec(xarr)
,您的示例也会丢弃数据。您可能需要sort
。
最后,在朱莉娅push!
效率不高。您可能期望使用其他语言(Matlab?)的经验效率低下,但在Julia中,您可以有效地增长1d数组。
答案 1 :(得分:2)
如果您打算对数据进行排序,这可能对您有用。
read_x_data(fname) = sort!(vec(readdlm(fname,Float64)))