Python:numpy数组子列表与序列重要的大列表匹配

bkc*_*ion 5 python numpy

我需要找到大型列表中哪个索引与子列表匹配.

c = np.array(close)
EMA50 = np.array(MA50)
sublist = [False,True,True]
biglist = (c-EMA50)/c>0.01
>>>array([False, False, False, False, False, False, False, False, False,
       False, False, False, False,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True, False, False,  True, False,  True,  True, False, False,
        True, False, False, False, False, False, False, False,  True,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False,  True,  True,  True,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False,  True,  True,  True,  True], dtype=bool)
>>>sublist in biglist
>>>False
Run Code Online (Sandbox Code Playgroud)

我期待True,但它返回False.

期望的输出是

index_loc = [12,31,68,112] 
Run Code Online (Sandbox Code Playgroud)

Jit*_*ran 0

in不会检查子数组。相反,它检查元素。

您将必须执行以下操作:(
用于A大数组和b子列表以提高可读性。)

n = len(b)
c = [i for i in xrange(len(A)-n+1) if (b==A[i:i+n]).all()]
Run Code Online (Sandbox Code Playgroud)

c是所需的索引列表。

说明:
这是 python 中的基本列表理解。
这个想法是创建大数组的子数组并检查它是否与子列表匹配。

分解该语句以便更好地理解:

c = []    
for i in xrange(len(A)-n+1):
    if (b==A[i:i+n]).all():    # if list and arrays match
        c.append(i)
Run Code Online (Sandbox Code Playgroud)