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

如何计算一维数组中前1/3最大值的平均值?

筛选数组最高1/3元素并计算平均值的解决方案

核心思路

  • 对数组降序排序,让最大元素排在最前
  • 根据数组长度计算需选取的元素数量(支持非3倍数长度的场景)
  • 截取排序后的前N个元素(N为计算出的数量)
  • 计算这些元素的平均值

Python 实现示例

def top_third_average(arr):
    # 降序排序数组
    sorted_arr = sorted(arr, reverse=True)
    # 用整数除法实现向上取整,确保不会遗漏接近1/3的元素
    n = (len(arr) + 2) // 3
    # 截取前n个最高值元素
    top_third = sorted_arr[:n]
    # 计算平均值
    average = sum(top_third) / len(top_third)
    return average

# 测试示例
test_arr = [1,2,3,4,5,6,7,8,9]
print(top_third_average(test_arr))  # 输出8.0

关键细节说明

  • 元素数量计算:(len(arr) + 2) // 3 是Python中实现整数除法向上取整的技巧,适配不同长度的数组:
    • 数组长度为9时,(9+2)//3=3,刚好取前3个元素,符合示例需求
    • 数组长度为10时,(10+2)//3=4,取前4个最大元素
    • 若需向下取整,直接替换为 len(arr) // 3 即可
  • 大规模数组优化:如果处理超大量数据,用NumPy库效率更高:
import numpy as np

def top_third_average_np(arr):
    sorted_arr = np.sort(arr)[::-1]
    n = (len(arr) + 2) // 3
    top_third = sorted_arr[:n]
    return np.mean(top_third)

# 测试
test_arr = np.array([1,2,3,4,5,6,7,8,9])
print(top_third_average_np(test_arr))  # 输出8.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:02:32