2016-04-22 31 views
1

readdlm返回Array{Any, 2},有两个维度。我正在阅读的文件包含一维列表,每行一个项目。有没有办法强制readdlm返回Array{Any, 1}(用适当的类型替换Any)?或者也许这有一个不同的功能?从Julia的文件中读取一个列表(Array {Any,1})?

+1

刚刚用'vec()'包装调用有什么问题?即'vec(readdlm(filePath,delim,OutputType))' –

+0

@ColinTBowers是否会创建数组的新副本? – becko

+0

不确定。我不擅长解释'@ code_llvm'的输出。你可以尝试'@code_llvm randn(100,1)',并将它与'@code_llvm vec(randn(100,1))'比较 - 你可能比我更擅长这种东西。我可以用一定的信心说,除非在奇怪的边缘情况下,你很可能不会注意到任何性能差异。 –

回答

2

readlines功能将读取文件的所有行:

readlines("filename") 

要知道,这留下换行,你可能不希望,并返回字符串而非自动推断类型。您可能想要解析数据:

map(x -> parse(Float64, x), readlines("filename")) 

用所需类型替换Float64

+1

'readlines(“filename”)'如果每行有一个条目 - 没有换行符的问题char – muon

+0

事实上,在最新版本中默认已更改为'chomp = true'。在写这个答案时,保留了新行。 –