gpt4 book ai didi

python - 如何获取numpy数组中特定值的频率

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:06 25 4
gpt4 key购买 nike

我有一个形状为 1001、2663 的 numpy 数组。数组包含值 12 和 127,现在我想计算特定值的数量,在本例中为 12。所以我尝试使用 bincount,但那是做的很奇怪。看看我得到了什么:

>>> 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 的频率,但它不会告诉我这个。矩阵的形状也很奇怪。

如果我尝试用 where 求和也不会给我正确的值:

>>> 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 数组中特定数字的单个值的频率?

最佳答案

你想要一个简单的number 在你的data 数组中出现的次数?尝试

np.bincount(data)[number]

关于python - 如何获取numpy数组中特定值的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com