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

如何提取Numpy数组中每行首尾9元素之间的中间元素索引

获取Numpy数组每行首尾9之间元素的索引

针对你给出的Numpy数组,要提取每行首尾连续9之外的中间元素索引,不用bisect模块也能高效实现,用Numpy原生方法更适配数组操作:

步骤说明

  • 定位左边界:找到每行中第一个不是9的元素索引
  • 定位右边界:找到每行中最后一个不是9的元素索引
  • 生成索引列表:对每行,生成从左边界到右边界(包含两端)的索引序列

完整代码实现

import numpy as np

arr = np.array([[9,9,9,9,9,0,0,0,1,1,1,0,0,9,9],
                [9,9,9,1,1,1,1,0,0,0,0,1,1,1,9],
                [9,1,1,0,0,0,1,1,1,0,0,0,1,1,9],
                [9,1,1,1,1,1,1,1,0,0,0,1,1,1,9]])

# 获取每行第一个非9的索引(左边界)
left_indices = np.argmax(arr != 9, axis=1)
# 获取每行最后一个非9的索引(右边界)
# 先反转每行,找到第一个非9的位置,再转换为原行的索引
right_indices = arr.shape[1] - 1 - np.argmax(arr[:, ::-1] != 9, axis=1)

# 生成每行的索引列表
result = []
for l, r in zip(left_indices, right_indices):
    result.append(list(range(l, r + 1)))

# 输出结果
print(result)

输出结果

[[5, 6, 7, 8, 9, 10, 11, 12],
 [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]]

结果完全匹配你期望的输出(原数组第四行的结果也符合逻辑,你给出的期望输出中漏写了该行)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:03:24