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

带条件的数值分组:如何按差值阈值合并相近数据并替换为均值?

实现相邻差值小于0.01的数值分组并计算均值

这是个很实用的批量数据聚合需求,我来给你拆解两种可行的实现方式——手动实现(帮你理解底层逻辑)和利用现成工具函数(高效简洁)。

首先,我们先把你提供的带索引标记的数据整理成可直接处理的数值数组:

import numpy as np

# 提取原始数据中的纯数值(去掉[1][7]这类索引标记)
data = np.array([0.06997360, 0.09154285, 0.10607553, 0.10607631, 0.10652390, 0.10857691,
                 0.10858633, 0.10858633, 0.10870369, 0.18790912, 0.18792473, 0.19509030,
                 0.20040993, 0.22548593, 0.22550167, 0.22593338, 0.22893103, 0.23196562,
                 0.25901025, 0.30231663, 0.30245132, 0.30246287, 0.34893528, 0.34938294,
                 0.34943865, 0.45200544, 0.45658957, 0.45673815, 0.46432602, 0.48493226,
                 0.58318915, 0.58618472, 0.66311458, 0.66311774, 0.69777062, 0.69782017,
                 0.70456743, 0.70754232, 0.71668759, 0.71744870, 0.71780786, 0.77227751,
                 0.79785928, 0.79823416, 0.79831632, 0.79832545, 0.79863813, 0.79880086,
                 0.91610076, 0.91611498, 0.91611830, 0.91612582, 0.91612582, 0.91614856])

一、手动实现(理解底层逻辑)

核心思路是:找到相邻差值≥0.01的位置作为分割点,把数组切成多个子组,再分别计算每组均值。

# 1. 计算相邻元素的差值
diff = np.diff(data)
# 2. 定位分割点:差值≥0.01的位置,加1是因为分割点是当前元素的下一个位置
split_indices = np.where(diff >= 0.01)[0] + 1
# 3. 按分割点拆分数组得到分组
groups = np.split(data, split_indices)
# 4. 计算每组的均值
group_means = [np.mean(group) for group in groups]

# 打印结果验证
print("手动实现的分组及均值:")
for idx, (group, mean) in enumerate(zip(groups, group_means), 1):
    print(f"第{idx}组:{group},均值:{mean:.8f}")

二、利用现成工具函数(高效简洁)

如果用Python的数据处理库pandas,可以用groupby结合自定义分组键来快速实现,代码更简洁:

import pandas as pd

# 把数据转为Series
s = pd.Series(data)
# 生成分组键:当相邻差值≥0.01时,分组键自动加1,实现连续相近值归为一组
group_key = (s.diff() >= 0.01).cumsum()
# 分组计算均值
group_means_pd = s.groupby(group_key).mean()

# 打印结果
print("\npandas实现的分组均值:")
print(group_means_pd)

这两种方法都能完美满足你的需求:比如你提到的第3至第9个数值(对应数组中索引2到8的元素),它们的相邻差值都小于0.01,会被自动归为一组并计算均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:06:18