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
相关产品推荐
相关产品推荐

