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

二维NumPy数组中首元素重复行的均值计算方法

解决NumPy数组中首元素重复行的均值计算问题

针对你提出的需求——对NumPy数组中首元素相同的行,计算第二至最后一列的均值并保留唯一首元素行,下面是具体的实现步骤和代码:

完整代码示例

import numpy as np

# 定义你的原始数组
arr = np.array([[1, 2, 3, 4], [2, 2, 3, 4], [1, 4, 5, 6], [3, 2, 3, 4]])

# 获取首列的所有唯一值,确定分组依据
unique_first_elements = np.unique(arr[:, 0])

# 用来存储最终结果的列表
result_rows = []

for elem in unique_first_elements:
    # 筛选出首元素等于当前值的所有行
    filtered_rows = arr[arr[:, 0] == elem]
    # 计算第二到最后一列的均值,keepdims=True保证结果是二维结构,方便后续拼接
    mean_values = np.mean(filtered_rows[:, 1:], axis=0, keepdims=True)
    # 把首元素和计算好的均值拼接成一行,添加到结果列表
    combined_row = np.hstack([[[elem]], mean_values])
    result_rows.append(combined_row[0])

# 转换为NumPy数组得到最终结果
final_result = np.array(result_rows)
print(final_result)

代码解释

  • 提取分组依据:用np.unique(arr[:, 0])获取首列的所有唯一值,这样我们就知道需要对哪些首元素对应的行进行合并计算。
  • 筛选分组行:通过布尔索引arr[arr[:, 0] == elem]快速筛选出所有首元素等于当前值的行。
  • 计算均值:np.mean(filtered_rows[:, 1:], axis=0, keepdims=True)针对第二到最后一列计算均值,axis=0表示按列计算,keepdims=True确保结果保持二维形状,避免后续拼接时出现维度不匹配的问题。
  • 拼接结果行:用np.hstack将首元素和均值列拼接成完整的一行,收集所有行后转换为NumPy数组,就是你想要的输出。

运行代码后,输出结果为:

[[1. 3. 4. 5.]
 [2. 2. 3. 4.]
 [3. 2. 3. 4.]]

如果需要整数类型的结果,可以在最后添加final_result = final_result.astype(int)进行转换。

内容的提问来源于stack exchange,提问作者M. Zidan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:37:34