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