我正在尝试将Remove NaN row from X array and also the corresponding row in Y中的第一个答案从Python翻译成Julia 0.5.0而不导入numpy。我可以用以下内容复制“删除NaN”部分:
x1 = x[!isnan(x)]
但只使用它可以将2D阵列减少到1D,我不希望这样。在这种情况下,numpy.any
的Julia等价物是什么?或者,如果没有等效的,我如何保持我的数组2D并删除包含NaN的整个行?
答案 0 :(得分:2)
您可以找到包含any
的NaN条目的行:
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