2017-06-08 14 views
2

私はnumpyの2次元配列(8000x7200)を持っています。私は指定されたしきい値より大きい値を持つセルの数を数えたいと思います。私はダブルループを使ってこれをやろうとしましたが、時間がかかります。 この計算をすばやく実行する方法はありますか?Pythonの条件付き集計

答えて

3

おそらくnp.count_nonzero(x > threshold)のようなものでしょう。xは2次元配列です。

名前が示すように、count_nonzeroは、ゼロでない要素の数を数えます。 Trueが1-ishであることを利用して、それを使用して、Trueの要素の数を数えます。

+0

おかげで、それはほとんど私が選んだ例の性質によってだEv.Kounis @ 50% – Meryem

4

あなたの変数が続いてsum
* (a > threshold)がいくつかthresholdより大きいセルのすべてのインスタンスを示すboolean型の配列である使用

np.random.seed([3,1415]) 
a = np.random.rand(8000, 7200) 
threshold = .5 

として定義されているとします。ブール値はintのサブクラスで、Falseをゼロ、Trueを1つとして簡単にまとめることができます。 numpysumは、デフォルトで配列全体で合計されます。

(a > threshold).sum() 
28798689 
+0

これを働きました。 –

+0

にスポットされ – piRSquared

+0

私は知っているが、私はまだそれによって楽しまれているxD –