Да, просто используйте логический массив в качестве индекса.
julia> v = rand(5)
5-element Array{Float64,1}:
0.6377159558422454
0.1205285547043713
0.04902451987818024
0.737928505686815
0.34881071296002175
julia> i = v .> 0.5
5-element BitArray{1}:
1
0
0
1
0
julia> v[i]
2-element Array{Float64,1}:
0.6377159558422454
0.737928505686815
То же самое работает с двумерными массивами:
julia> m = rand(3,2)
3×2 Array{Float64,2}:
0.377744 0.0296205
0.682967 0.366501
0.906793 0.791147
julia> m[[true,true,false],:]
2×2 Array{Float64,2}:
0.377744 0.0296205
0.682967 0.366501
В julia эквивалент any(isnan(myMatrix), 2)
равенвместо any(isnan, myMatrix, dims=2)
. Или, поскольку вы сказали, что хотите удалить эти строки, вы на самом деле хотите all(!isnan, myMatrix, dims=2)
Однако, в любом случае это возвращает двумерный массив из 1 столбца, который вы не можете использовать для индексации. Вы можете либо преобразовать это в вектор, либо вместо этого отобразить это по строкам, чтобы получить вектор напрямую:
julia> myMatrix = rand([NaN, 1:5...], 5,2)
5×2 Array{Float64,2}:
1.0 3.0
5.0 NaN
4.0 1.0
5.0 NaN
1.0 2.0
julia> rowfilter = all(!isnan, myMatrix, dims=2)[:,1]
5-element Array{Bool,1}:
1
0
1
0
1
julia> myMatrix[rowfilter, :]
3×2 Array{Float64,2}:
1.0 3.0
4.0 1.0
1.0 2.0
или
julia> myMatrix[map(row-> all(!isnan, row), eachrow(myMatrix)), :]
3×2 Array{Float64,2}:
1.0 3.0
4.0 1.0
1.0 2.0
или с широковещательной рассылкой вместо map()
:
julia> myMatrix[all.(!isnan, eachrow(myMatrix)), :]
3×2 Array{Float64,2}:
1.0 3.0
4.0 1.0
1.0 2.0