Python 为价值变化的位置编制索引
我有一个用0和1填充的列表(也可以是一维numpy数组): 是否有一种简单的python方法可以提取从1到0的转换中的项目索引,反之亦然?Python 为价值变化的位置编制索引,python,numpy,Python,Numpy,我有一个用0和1填充的列表(也可以是一维numpy数组): 是否有一种简单的python方法可以提取从1到0的转换中的项目索引,反之亦然? 例如,对于上面的屏幕截图,它应该是这样的:[135016001970,…] answer = [] for i in range(len(L)-1): if L[i] != L[i+1]: answer.append((i,i+1)) 您也可以使用itertools成对配方: def pairwiseCheck(L): a
例如,对于上面的屏幕截图,它应该是这样的:[135016001970,…]
answer = []
for i in range(len(L)-1):
if L[i] != L[i+1]:
answer.append((i,i+1))
您也可以使用itertools成对配方:
def pairwiseCheck(L):
answer = []
a,b = itertools.tee(L)
next(b, None)
for i, (x,y) in enumerate(zip(a,b)):
if x != y:
answer.append((i, i+1))
return answer
一个简单的解决方案是使用numpy区分数据
import numpy as np
x = [0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0]
result = np.diff(x)
print np.where(result!=0)
#(array([ 4, 8, 11, 13]),)
这将为您提供每次转换之前的要点。请发布示例I/O,以便我能准确地提供您所需的内容。另外,您希望使用哪种索引?假设
L[[1350]=0
和L[1351]=1
,你想要1350
、1351
,还是(13501351)
?这并不重要,只是其中一个索引。“信号”来自图像扫描线。我认为有一些方法不需要在序列上迭代,我不知道,但我想就是这样。