我正在尝试将 Remove NaN row from X array 中的第一个答案以及 Y 中的相应行从 Python 翻译为 Julia 0.5.0,而不导入 numpy。我可以用以下方法复制“删除 NaN”部分:
x1 = x[!isnan(x)]
但仅使用它会将 2D 数组减少为 1D,我不希望这样。在这种情况下,Julia 中的
numpy.any
相当于什么?或者,如果没有等效项,我如何保持数组为 2D 并删除包含 NaN 的整行?
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; dims=2)
5×1 Matrix{Bool}:
1
0
1
0
0
然后您可以使用返回的逻辑数组作为第一维的掩码,但我们需要 (1) 使其成为一维(使用
vec
)和 (2) 将 1 翻转为 0 元素:
julia> A[.!vec(nanrows), :]
3×4 Matrix{Float64}:
0.429502 0.903061 0.864065 0.289931
0.760145 0.767524 0.183373 0.145246
0.101338 0.96232 0.26143 0.136931