我有一个类似下面的numpy数组:[1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1]
如何找到序列[1 1 1 -1]的位置?
该函数的输出应类似于:出现次数= 3,因为该序列从索引3开始。
感谢您的帮助!
答案 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]