/ / Julia配列のすべての値を確認しますか? -配列、julia-lang

Julia配列のすべての値をチェックしますか? - 配列、julia-lang

Julia配列のすべての値を一度に確認するにはどうすればよいですか?みましょう」のような配列があるとしましょう a=[3,4,6,10,55,31,9,10] 配列に値があるかどうかを確認するにはどうすればよいですか10を超える?または、繰り返し値があるかどうかを確認するにはどうすればよいですか(サンプルに2回含まれる10など)。これをチェックするループを作成できることは知っていますが、Juliaにはすべての値を一度にチェックする高速な方法があると思います。

回答:

回答№1は6

関数 any そして count これを行う:

julia> a = [3,4,6,10,55,31,9,10]
8-element Array{Int64,1}:
3
4
6
10
55
31
9
10

julia> any(x->x==3, a)
true

julia> count(x->x==10, a)
2

ただし、juliaのループは高速であるため、パフォーマンスはおそらくループとほぼ同じになります(これらの関数自体は標準ライブラリのjuliaに実装されています)。

問題がより多くの構造を持っている場合、あなたは大きなスピードアップを得ることができます。たとえば、ベクトルがソートされている場合は、使用できます searchsorted バイナリ検索で一致する値を見つけます。


回答№2については2

ブロードキャスト操作を使用することもできます。場合によっては、「より良い構文 any そして count、それ以外の場合は、それが何をしているのかがわかりにくい場合があります。

boola = a.>10 # Returns an Array{Bool}, true at any value >10
minimum(boola) # Returns false if any are <10
sum(a-10 .== 0) # Finds all values equal to 10, sums to get a count