我有一個形狀爲1001,2663的numpy數組。數組包含12和127的值,現在我想計算一個特定值的數量,在這種情況下12.所以我嘗試使用bincount,但這很奇怪。見我得到什麼:如何獲得一個numpy數組中的特定值的頻率
>>> 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
我沒辦法了:這麼著名的親愛的用途,如何讓一個特定值的頻率在numpy的矩陣?
EDIT
較小例子。但仍然得到我不瞭解的結果。爲什麼是零?
>>> 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數組中的單個值?
我建議用較小的(可行用手)例如,試圖瞭解發生了什麼。 – hivert