4

特定の条件を満たす (たとえば、0.75 より大きい) 列の値の数をカウントしようとしています。私が持っている列は、2000以上の小数で構成されています。

これは私が試したものです、

a = len(fs)
c = np.zeros(a)

for i in fs[0:a]:
    if i >= 0.75:
        print = 1

    elif i < 0.75:
        print = 0 

fs は私のコラムです。

このコードは、必要な 0 と 1 を正しく出力しますが、出力された 1 の数を数える方法がわかりません。最初にゼロの配列を作成し、次に何らかの方法で配列をループに追加して、正しい 0 と 1 の配列を作成することを考えました。次に、配列を合計することができます。これについてどうすればよいのかよくわかりませんし、試したことはすべてうまくいきません(私はプログラミングの経験がかなり浅いです)。これについてどうすればよいか、誰かアドバイスはありますか?私はこれがかなり単純であることを知っています...

ありがとうございました!

4

3 に答える 3

3

numpy では、次のようなことができます。

np.where(fs >= 0.75)[0].size

また

np.count_nonzero(fs >= 0.75)

どちらも同等ですが、私はおそらく 2 番目の方が好みです。説明については、ドキュメントを参照してください。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.count_nonzero.html

ただし、基本的には、その要素がどこにあるか、または条件に基づいてfs >= 0.75同じ長さのブール配列を作成します。これはそれぞれおよび と同等であるため、非ゼロ要素の数を返します。fsTrueFalse10np.count_nonzero

もちろん、スライスすることもできfsます。

np.count_nonzero(fs[0:a] >= 0.75)
于 2013-06-13T17:25:35.233 に答える
1

同じループで 1 の数を計算するかどうかは明確ではありません。その場合、vaggelas の答えは正しいです。

個別のループで値の数をカウントする場合は>= 0.75、次を使用できます。

>>> sum(1 for i in fs[0:a] if i >= 0.75)
于 2013-06-13T17:18:29.977 に答える
-1

私が正しく理解していれば

あなたが使用することができます

countone = 0  #counter for the times you print one
countzero = 0 # counter fot the times you print 0

for i in fs[0:a]:
    if i >= 0.75:
        print = 1
        countone+=1

    elif i < 0.75:
        print = 0 
        countzero +=1

ということですか?

于 2013-06-13T17:16:00.030 に答える