Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为价值变化的位置编制索引_Python_Numpy - Fatal编程技术网

Python 为价值变化的位置编制索引

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

我有一个用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):
    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)
?这并不重要,只是其中一个索引。“信号”来自图像扫描线。我认为有一些方法不需要在序列上迭代,我不知道,但我想就是这样。