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

如何统计NumPy数组中各子数组的出现次数?

统计NumPy数组中每个子数组的出现次数

这个问题我之前也碰到过——因为NumPy的二维子数组是ndarray类型,属于不可哈希对象,直接用常规的计数工具(比如collections.Counter)会报错。这里给你两种实用的解法,都能得到你想要的输出格式:

方法一:转换为元组后用collections.Counter统计

先把每个子数组转换成可哈希的元组,再用Counter完成计数,最后格式化输出:

import numpy as np
from collections import Counter

# 定义你的数组
x = np.array([[0, 1], [0, 1], [0, 2], [0, 2], [0, 3]])

# 将每个子数组转为元组(元组是可哈希的)
tuple_rows = [tuple(row) for row in x]

# 统计每个元组的出现次数
counts = Counter(tuple_rows)

# 格式化为你想要的输出样式
output_parts = []
for sub_arr, cnt in counts.items():
    # 把元组转成方括号的格式
    arr_str = f"[{', '.join(map(str, sub_arr))}]"
    output_parts.append(f"{arr_str} = {cnt}")

final_output = f"count = {', '.join(output_parts)}"
print(final_output)

运行后会输出:

count = [0, 1] = 2, [0, 2] = 2, [0, 3] = 1

方法二:用NumPy原生的np.unique函数

NumPy自带的unique函数支持指定axis参数来处理二维数组,直接返回唯一子数组和对应的计数:

import numpy as np

# 定义你的数组
x = np.array([[0, 1], [0, 1], [0, 2], [0, 2], [0, 3]])

# 获取唯一子数组和对应的计数
unique_subarrays, counts = np.unique(x, axis=0, return_counts=True)

# 格式化为目标输出
output_parts = []
for sub_arr, cnt in zip(unique_subarrays, counts):
    arr_str = f"[{', '.join(map(str, sub_arr))}]"
    output_parts.append(f"{arr_str} = {cnt}")

final_output = f"count = {', '.join(output_parts)}"
print(final_output)

这个方法不需要额外导入其他库,纯NumPy就能搞定,输出结果和方法一完全一致。

内容的提问来源于stack exchange,提问作者nvmnd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:22