2

形状が 1001、2663 の numpy 配列があります。配列には 12 と 127 の値が含まれています。特定の値 (この場合は 12) の数を数えたいと思います。私が得るものを見てください:

>>> x.shape
(1001, 2663)
>>> np.bincount(x)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ValueError: object too deep for desired array
>>> y = np.reshape(x, 2665663)
>>> y.shape
(2665663,)
>>> np.bincount(y)
array([      0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,  529750,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0,       0,       0,       0,       0,       0,       0,
             0, 2135913])
>>> np.nonzero(np.bincount(y))
(array([ 12, 127]),)

値 529750 はおそらく値 12 の頻度であり、2135913 はおそらく値 127 の頻度ですが、これはわかりません。マトリックスの形も変です。

どこでも合計しようとすると、正しい値が得られません:

>>> np.sum(np.where(x==12))
907804649

私は選択肢がありません:SOの有名な使用法、numpyマトリックスで特定の値の頻度を取得する方法は?

編集

小さい例。しかし、まだよくわからない結果が得られます。なんでゼロ?

>>> m = np.array([[1,1,2],[2,1,1],[2,1,2]])
>>> np.bincount(m)
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ValueError: object too deep for desired array
>>> n = np.reshape(m, 9)
>>> n
array([1, 1, 2, 2, 1, 1, 2, 1, 2])
>>> np.bincount(n)
array([0, 5, 4])

私はそれを得ると思います。[0,5,4] のゼロは、行列に 0 の値がないことを意味します。したがって、私の実際の状況では、529750 はマトリックスの 12 番目の値であり、マトリックス値 0-11 はすべて '0' であり、多くの 0 値 (値 13-126) を取得し、値 127 は 2135913 の頻度を示します。 numpy 配列内の特定の数値の単一の値として頻度を取得する方法は?

4

3 に答える 3