如何在Julia中消除数组中的任何元素(1D)?

Rgr*_*and 3 julia

我想知道如何消除Julia数组(1D)中的任何元素,如下所示.它是通过阅读文本文件而构建的,其中没有相关信息的行与具有相关信息的行混合在一起."没有"是类型Void,我想清理所有的数组.

nothing                                                                                                                                 
nothing                                                                                                                                 
nothing                                                                                                                                 
nothing                                                                                                                                 
nothing                                                                                                                                 
"   -16.3651\t     0.1678\t    -4.6997\t   -14.0152\t    -2.6855\t   -16.0294\t    -7.8049\t   -27.1912\t    -5.0354\t   -14.5187\t\r\n"
"   -16.4490\t    -1.0910\t    -3.6087\t   -12.6724\t    -1.5945\t   -14.7705\t    -7.2174\t   -25.2609\t    -3.7766\t   -14.3509\t\r\n"
"   -16.4490\t    -2.2659\t    -2.4338\t   -10.9100\t    -0.5875\t   -13.6795\t    -6.7139\t   -22.9950\t    -2.9373\t   -14.0991\t\r\n"
Run Code Online (Sandbox Code Playgroud)

Sal*_*apa 5

\n

你如何阅读该文件?

\n

nothing您可以从数组中过滤掉\'s:

\n
filter(x -> !isnothing(x), [nothing, 42]) # => Any[42]\n
Run Code Online (Sandbox Code Playgroud)\n

但您可能需要首先使用制表符分隔值 (.tsv) 文件清理数据,如下所示:

\n
-16.3651    0.1678  -4.6997 -14.0152    -2.6855 -16.0294    -7.8049 -27.1912    -5.0354 -14.5187\n-16.4490    -1.0910 -3.6087 -12.6724    -1.5945 -14.7705    -7.2174 -25.2609    -3.7766 -14.3509\n-16.4490    -2.2659 -2.4338 -10.9100    -0.5875 -13.6795    -6.7139 -22.9950    -2.9373 -14.0991\n
Run Code Online (Sandbox Code Playgroud)\n

使用readdlm

\n
julia> readdlm("data.tsv")\n3x10 Array{Float64,2}:\n -16.3651   0.1678  -4.6997  -14.0152  \xe2\x80\xa6  -27.1912  -5.0354  -14.5187\n -16.449   -1.091   -3.6087  -12.6724     -25.2609  -3.7766  -14.3509\n -16.449   -2.2659  -2.4338  -10.91       -22.995   -2.9373  -14.0991\n
Run Code Online (Sandbox Code Playgroud)\n

使用DataFrmaes.readtable

\n
julia> df = readtable("data.tsv");\n\njulia> names!(df, [symbol(x) for x in \'A\':\'J\'])\n2x10 DataFrames.DataFrame\n| Row | A       | B       | C       | D        | E       | F        | G       |\n|-----|---------|---------|---------|----------|---------|----------|---------|\n| 1   | -16.449 | -1.091  | -3.6087 | -12.6724 | -1.5945 | -14.7705 | -7.2174 |\n| 2   | -16.449 | -2.2659 | -2.4338 | -10.91   | -0.5875 | -13.6795 | -6.7139 |\n\n| Row | H        | I       | J        |\n|-----|----------|---------|----------|\n| 1   | -25.2609 | -3.7766 | -14.3509 |\n| 2   | -22.995  | -2.9373 | -14.0991 |\n
Run Code Online (Sandbox Code Playgroud)\n


Dan*_*etz 5

testvector[testvector.!=nothing] 也是一个非常易读的选择.

基准测试可以帮助选择最有效的代码.