You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NumPy按出现次数整理矩阵中0-5的数值?

问题:用NumPy统计矩阵中0-5数值的出现次数并整理为数组

给定3x3矩阵:

[[1 1 3]
 [4 5 2]
 [3 0 0]]

需要统计0到5每个数值的出现次数,整理为数组,期望输出:[2,2,1,2,1,1]。

尝试的代码:

import numpy as np

m = np.matrix([[1,1,3], [4,5,2], [3,0,0]]) # Primary matrix, used for obtaining the values
print("Original Matrix: ") # Print original matrix
print(m)

print("Occurrences: ")
for i in range(6):
  occur = (np.count_nonzero(m == i)) # Count the number of elements satisfying the condition
  print(i, ":", occur)

当前输出:

Occurrences:
0 : 2
1 : 2
2 : 1
3 : 2
4 : 1
5 : 1

解决方案

方法1:基于现有循环改进

直接在循环中收集统计结果,再转为NumPy数组:

import numpy as np

m = np.matrix([[1,1,3], [4,5,2], [3,0,0]])
counts = []
for i in range(6):
    counts.append(np.count_nonzero(m == i))
result = np.array(counts)
print(result)  # 输出: [2 2 1 2 1 1]

方法2:更高效的np.bincount方法

NumPy的np.bincount()专门用于统计非负整数数组中每个值的出现次数,是更高效的实现方式:

import numpy as np

m = np.matrix([[1,1,3], [4,5,2], [3,0,0]])
# 将矩阵展平为一维数组后统计
result = np.bincount(m.flatten())
print(result)  # 输出: [2 2 1 2 1 1]

说明:m.flatten()把二维矩阵转为一维数组,np.bincount()会自动统计0到数组最大值(此处为5)的每个整数出现次数,完全匹配需求。


内容的提问来源于stack exchange,提问作者Ian Aragão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:48:23