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

如何用NumPy向量化方法获取分割后子数组的最大值?

用NumPy向量化方式实现分割数组后取各子数组最大值

当然可以用纯NumPy向量化方式实现,无需预先分割数组,核心是使用np.maximum.reduceat函数——它专门用于对数组的指定区间执行聚合操作,完美适配这个场景,而且效率远高于Python循环。

实现代码

import numpy as np
arr = np.arange(12)
ind = np.array([3, 5, 9])

# 构造完整的区间起始索引:从数组开头0开始,拼接原分割点
reduce_indices = np.concatenate([[0], ind])
# 向量化计算各区间最大值
max_values = np.maximum.reduceat(arr, reduce_indices)

print(max_values)  # 输出: array([ 2,  4,  8, 11])

原理说明

np.maximum.reduceat的工作逻辑是:

  • 以reduce_indices中的每个索引为起点,依次计算当前索引到下一个索引前一位的元素最大值
  • 最后一个索引对应的区间会直接计算到数组末尾
  • 这正好和np.split(arr, ind)分割出的子数组一一对应,无需生成中间子数组列表,完全规避了Python循环的额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:24:50