在python中查找连续数字的起始和结束索引

时间:2017-09-06 20:03:53

标签: python arrays

我有阵列

A=[1,2,2,2,2,2,2,2,2,2,3,5,5,5,5,5,5,5,6,7]

我想找到重复的所有数字的起始和结束索引。我期待:

2>>> [1,9]
5>>> [11,17]

3 个答案:

答案 0 :(得分:0)

此代码应该有助于计算列表中的重复整数组

{
 "token": "{token}"
}

答案 1 :(得分:0)

我的代码如下:

A=[1,2,2,2,2,2,2,2,2,2,3,5,5,5,5,5,5,5,6,7]


import numpy as np
xdiff = np.diff(A) == 0

xdiff_bol= xdiff.astype(np.int)
ii = np.concatenate((np.array([0]),xdiff_bol,np.array([0])))
sta = np.array([0,1])

输出如下:

array([0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0])

所有[0,1]块都是重复数字的起始索引,而[1,0]是重复数字的结束索引。

那么,如何在输出数组中识别[1,0]和[1,0]的索引位置?

答案 2 :(得分:0)

A=[1,2,2,2,2,2,2,2,2,2,3,5,5,5,5,5,5,5,6,7]
A = [1,2,2,2,2,2,2,2,2,2,3,5,5,5,5,5,5,5,6,7,2,2,2]


xdiff = np.diff(A) == 0
xdiff_bol= xdiff.astype(np.int)
ii = np.concatenate((np.array([0]),xdiff_bol,np.array([0])))

start_index=[]
end_index=[]

for index,number in enumerate(ii):

   if (index+1) !=(len(ii)):

        if (number==0) & (ii[index+1])==1:
        start_index.append(index)

        if (number==1) & (ii[index+1]==0):
        end_index.append(index)



Repeat = np.array(A)
Repeat = Repeat[start_index]