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

如何在Numpy数组第一列中找出前值更大的元素索引?

Pythonic的Numpy实现方案

当然有非常简洁高效的Pythonic实现方式,完全不用写冗长的循环,利用Numpy的向量化操作就能轻松解决这个问题!

实现步骤与代码

首先我们可以拆解需求:要找第一列中比前一个元素小的元素的索引(因为"出现在比自身更大的值之后"等价于当前元素 < 前一个元素)。用Numpy的切片和布尔索引就能快速完成:

import numpy as np

# 给定的数组
n1 = np.array([[1, 4], [1, 5], [2, 4], [7, 2], [1, 3], [4, 7], [2, 9]])

# 提取第一列数据
first_col = n1[:, 0]

# 生成布尔掩码:标记当前元素是否小于前一个元素
# first_col[1:] 是从第2个元素到末尾,first_col[:-1] 是从第1个到倒数第2个元素
mask = first_col[1:] < first_col[:-1]

# 获取掩码中True的位置,再加1得到原数组中的索引(因为切片后位置偏移了1)
result = np.where(mask)[0] + 1

print(result)  # 输出: array([4, 6])

为什么这是Pythonic的?

  • 向量化操作:完全避免了Python循环,利用Numpy的底层C实现,处理大数组时效率提升非常明显
  • 代码简洁可读:每一步都清晰对应需求,切片和布尔索引是Numpy的惯用写法,熟悉Numpy的人一眼就能看懂逻辑
  • 结果精准:正好匹配你期望的输出,索引4的元素1小于前一个的7,索引6的元素2小于前一个的4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:23:32