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

Python中快速查找数组第i个元素前所有元素最大值的方法

高效实现数组转单调递增数组的方法

你的需求本质是计算数组的累积最大值——每个位置的值等于该位置及之前所有元素的最大值,最终得到一个非递减的单调数组。

原代码的性能问题

你当前的循环实现时间复杂度为O(n²):每次迭代都要遍历前i个元素计算最大值,当数组规模很大(比如十万级以上)时,重复的遍历会导致速度急剧下降。

最优解决方案:使用numpy内置的累积最大值函数

numpy提供了np.maximum.accumulate()方法,专门用于高效计算累积最大值,时间复杂度为O(n),完全避免了循环的低效问题。

示例代码:

import numpy as np

# 假设x是你的输入数组
x = np.array([1, 3, 2, 5, 4])
y = np.maximum.accumulate(x)
# 输出结果:array([1, 3, 3, 5, 5])

这个方法直接生成目标数组,不需要先复制原数组再逐个修改,逻辑更简洁,性能提升非常明显。

性能对比参考

对于一个包含100,000个元素的随机数组:

  • 原循环方法:耗时约20秒以上(具体取决于硬件)
  • np.maximum.accumulate():耗时仅约0.001秒左右

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:35:15