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

基于NUMPY数组按多列分组统计行数

仅用Numpy实现按多列分组统计行数

实现步骤与代码

将输入列表转为Numpy数组后,通过np.unique识别唯一分组键,结合np.bincount统计每组行数,最终拼接得到目标结果:

import numpy as np

# 输入数组
arr = np.array([['a', '1' ,'2.3'],
                ['a', '1' ,'1.1'],
                ['b', '2', '3.4'],
                ['a', '2', '10.1']])

# 提取前两列作为分组依据
group_keys = arr[:, :2]

# 获取唯一分组键,以及原数组元素对应的唯一键索引
unique_keys, inverse_indices = np.unique(group_keys, axis=0, return_inverse=True)

# 统计每个唯一分组的行数
counts = np.bincount(inverse_indices).reshape(-1, 1)

# 拼接分组键与统计次数
arr_counts = np.hstack([unique_keys, counts])

# 转为列表格式(与示例输出结构一致)
arr_counts_list = arr_counts.tolist()
print(arr_counts_list)

代码说明

  • arr[:, :2]:截取原数组前两列,作为分组的核心键值。
  • np.unique(..., axis=0, return_inverse=True):按行维度识别唯一的分组组合,return_inverse=True返回的索引数组用于后续次数统计。
  • np.bincount(inverse_indices):根据索引数组统计每个唯一分组的出现次数,reshape(-1,1)将一维次数数组转为二维,确保能与分组键数组横向拼接。
  • np.hstack(...):将唯一分组键和对应次数拼接为目标格式的数组。

运行后输出结果与预期一致:

[['a', '1', 2], ['a', '2', 1], ['b', '2', 1]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:07:41