我需要找到大型列表中哪个索引与子列表匹配.
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)
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)