查找特定序列在numpy数组中的位置

时间:2019-10-07 09:57:37

标签: python numpy

我有一个类似下面的numpy数组:[1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1]

如何找到序列[1 1 1 -1]的位置?

该函数的输出应类似于:出现次数= 3,因为该序列从索引3开始。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果您还有其他范围的数字,则可以使用双循环...

def subindex(sub, arr):
    index = i = -1  # or None or whatever is relevant when sub is NOT found
    ext_arr = list(arr)
    ext_arr.extend([np.NaN]*len(sub))
    for j, sub_j in enumerate(sub):
        for i, arr_i in enumerate(ext_arr[j:j+len(sub)]):
            try:
                if arr_i != sub_j:
                    continue  # get out of the inner loop and check from next i
            except:
                pass
        # if you are here, you have a match
        index = i
        break
    return index

结果...

>>> arr = "1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1".split(" ")
>>> sub = "1 1 1 -1".split()
>>> print(subindex(sub, arr))
3

答案 1 :(得分:0)

一行:

[i for i in range(0,len(x)) if list(x[i:i+4])==[1, 1, 1, -1]]

[3]

如果您需要常规解决方案:

#define your np.array and your list
x=np.array([1 ,-1, -1 ,1 ,1 ,1, -1, -1, -1 ,1, -1, -1, 1 ,-1])
sublist=[1, 1, 1, -1]

[i for i in range(0,len(x)) if list(x[i:i+len(sublist)])==sublist]

[3]