Прежде всего, добро пожаловать в stackoverflow!
Один из способов получить то, что вы хотите, что вы почти получили право, заключается в следующем:
julia> M = rand(1:10, 3,3)
3×3 Array{Int64,2}:
3 10 7
6 7 8
2 10 6
julia> v = M[M .% 2 .== 0]
6-element Array{Int64,1}:
6
2
10
10
8
6
Обратите внимание на дополнительную точку в .==
, который применяет сравнение равенства поэлементно.
Более быстрая версия будет использовать findall
:
julia> M[findall(x->x%2==0, M)]
6-element Array{Int64,1}:
6
2
10
10
8
6
Здесь x->x%2==0
- анонимная функцияпредставляющий критерий поиска. В особом случае x%2==0
это может быть просто заменено на iseven
:
julia> M[findall(iseven, M)]
6-element Array{Int64,1}:
6
2
10
10
8
6
. Вы также можете использовать массивы , чтобы получить то, что вы хотите, что должно бытьеще быстрее:
julia> [x for x in M if iseven(x)]
6-element Array{Int64,1}:
6
2
10
10
8
6
Наконец, возможно, самый нелепый вариант - использовать filter
:
julia> filter(iseven, M)
6-element Array{Int64,1}:
6
2
10
10
8
6