如何计算numpy数组指定列两个点位区间内的最大值
NumPy指定列两点间最大值实现方案
核心逻辑非常简单:不需要找专门的区间计算函数,先用切片把目标区间的元素截出来,再对切片结果求最大值即可,NumPy切片返回原数组视图,没有额外拷贝开销,效率很高。
具体实现步骤
- 切片规则遵循Python原生左闭右开逻辑:如果要取行索引
a到行索引b(包含a、b两端,且假设a < b)的第col列元素,切片写法为data[a : b+1, col] - 对切出的一维子数组直接调用
.max()方法即可得到区间最大值
对应测试代码的可运行实现
import numpy as np data = np.random.uniform(low=0.0005, high=0.001, size=(20,2)) # 求第1列(索引为1)、行索引5到15(包含两端)的最大值 interval_max = data[5:16, 1].max() print(interval_max)
避坑提示
最容易出错的点是切片的右边界:如果写
data[5:15, 1],实际只会取到行5到行14的元素,会漏掉第15行的值,必须把右边界设为15+1=16才能覆盖到两端点。
如果无法提前确定两个点位的索引大小,可以先对起止索引排序再切片,避免起止点写反返回空数组:point1_idx, point2_idx = 5, 15 start, end = sorted([point1_idx, point2_idx]) interval_max = data[start:end+1, 1].max()
内容的提问来源于stack exchange,提问作者thatoneguy
相关产品推荐
相关产品推荐

