gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:26:46 26 4
gpt4 key购买 nike

我需要在大列表中找到与子列表匹配的索引。

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

我期望 True 但它返回 False。

期望的输出是

index_loc = [12,31,68,112] 

最佳答案

一个非常简单的解决方案,使用 slicingsublist 模式并检查该签名并获取索引将是 -

np.flatnonzero(~a[:-2] & a[1:-1] & a[2:]) # a as data array

解释

基本上,我们从数据数组中切出三个切片——一个切片从第 0 个索引开始,直到遗漏最后两个元素,另一个切片从第一个索引开始,到倒数第二个元素结束,第三个切片从第 2 个索引开始一直持续到最后。这三个切片对应于 sublist 模式所需的三个匹配元素,即 [False, True, True]。我们需要确保第一个是 False,换句话说,我们要确保它的否定是 True。 NumPy 中的否定是通过 ~ 运算符实现的。因此,从本质上讲,我们从这三个切片中获取组合掩码,并使用 np.flatnonzero 获取相应的索引。

对于给定的数据结果为-

In [79]: np.flatnonzero(~a[:-2] & a[1:-1] & a[2:])
Out[79]: array([ 12, 31, 68, 112])

关于Python:numpy 数组子列表与序列很重要的大列表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42107865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com