2016-08-29 4 views
2

ジュリアアレイのすべての値を一度にチェックするにはどうすればよいですか?たとえば、配列がa=[3,4,6,10,55,31,9,10]のようになっているとします。配列の値が10より大きいかどうかを確認するにはどうすればよいですか?または、繰り返し値があるかどうかを確認するにはどうすればいいですか?(これはサンプルに2回含まれていますが、これをチェックするためにループを書くことができますが、Juliaはすべての値を一度に確認する方法がより速いと仮定しています)。ジュリアアレイのすべての値を確認しますか?

答えて

7

機能anycountは、次の操作を行います。ジュリアのループが高速です(そして、これらの機能は、自身が標準ライブラリにジュリアに実装されている)ので、パフォーマンスはおそらく、ループとほぼ同じになりますが

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 

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

+0

グレートを:いくつかのケースでは、他のケースでは、それはやっているものをあまり明確することができ、anycountよりも立派な構文です。しかし、私は少しあなたの答えを変更することができますか?私は例として10を使用しました。しかし、私は繰り返し値を見つけたいと思っています。同様に、a = [1,4,4]はTRUEを返し、a = [1,2,3]はFALSEを返します –

+2

待ち、私はこれを持っていると思います。私はあなたが与えた答えを組み合わせることができますし、ユニークな()関数を使用して私に必要なものの2番目の部分を取得します。ありがとう!!! –

3

ブロードキャストされた操作も使用できます。私の最初の部分を取得し

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 
関連する問題