2017-01-10 57 views
2

我正在尝试将Remove NaN row from X array and also the corresponding row in Y中的第一个答案从Python导入到Julia 0.5.0而不导入numpy。我可以复制“去掉NaN的”部分:从Julia中的多维数组中删除整行的NaN?

x1 = x[!isnan(x)] 

但只使用降低了二维数组到1D,我不希望出现这种情况。在这种情况下,numpy.any的Julia等价物是什么?或者如果没有等价的话,我如何保存我的数组2D并删除包含NaN的整个行?

回答

1

您可以查找包含NaN的条目以any行:

julia> A = rand(5, 4) 
     A[rand(1:end, 4)] = NaN 
     A 
5×4 Array{Float64,2}: 
    0.951717 0.0248771 0.903009 0.529702 
    0.702505 NaN   0.730396 0.785191 
NaN   0.390453 0.838332 NaN 
    0.213665 NaN   0.178303 0.0100249 
    0.124465 0.363872 0.434887 0.305722 

julia> nanrows = any(isnan(A), 2) # 2 means that we reduce over the second dimension 
5×1 Array{Bool,2}: 
false 
    true 
    true 
    true 
false 

然后你就可以使用返回的逻辑阵列作为掩模进入第一维度,但我们需要让一维第一:

julia> A[!vec(nanrows), :] 
2×4 Array{Float64,2}: 
0.951717 0.0248771 0.903009 0.529702 
0.124465 0.363872 0.434887 0.305722