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

Python中返回数组停止递增索引的代码问题求助

嘿,我瞅到你的问题啦——你想找出数组里所有停止递增的索引,但当前代码返回了重复的结果,这问题的核心出在循环的遍历对象上!

问题根源

你写的for i in ori_array是在遍历数组的元素值,而不是我们需要的索引。举个例子,在array_1 = [1,2,2,1,1,2,1]里,当循环到元素2时,你会用这个值作为索引去访问ori_array[i]和ori_array[i+1],这就导致多次触发ori_array[i] > ori_array[i+1]的条件,重复把2添加到结果列表里。

修正方案

我们需要遍历数组的索引,而不是元素。因为要比较相邻元素,遍历范围应该是从0到数组长度减2(避免最后一个索引+1出现越界错误)。

修正后的代码如下:

import numpy as np

def monotonic_check(ori_array):
    indices_array = []
    # 遍历索引,覆盖到倒数第二个元素即可
    for i in range(len(ori_array) - 1):
        # 比较当前元素和下一个元素,判断是否停止递增
        if ori_array[i] > ori_array[i+1]:
            indices_array.append(i)
    return indices_array

# 测试你的示例数组
array_1 = np.array([1,2,2,1,1,2,1])
print(monotonic_check(array_1))  # 输出: [2,5]

额外说明

如果你的“停止递增”定义包括元素相等的情况(比如2,2也视为停止递增),只需要把判断条件改成ori_array[i] >= ori_array[i+1]就行。不过根据你给出的预期输出,当前的>条件是完全符合需求的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:30:16