我有一个非常简单的文本文件,只有数字,看起来像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)))