2 回答
TA贡献1844条经验 获得超8个赞
在您已有的基础上,在使用它之前,您可以删除c与前一个值的距离小于 5 的所有值,确保在继续之前删除相关值。也就是说,如果c = np.array([0, 7, 11, 15]),我们将删除 11 但保留 15。
现在,您可以根据需要对其中的部分进行矢量化,但除此之外,您要查找的内容可以归结为
i = 0
while i < len(c)-1:
if c[i+1] - c[i] < 5:
c = np.delete(c, i+1)
else:
i += 1
TA贡献1784条经验 获得超8个赞
我的方法是将其视为查找子字符串问题。如果你喜欢,看看这个:
word = ''.join(df['0'].values)
seq_bool = np.zeros(len(word)).astype(bool)
start = 0
while True:
idx = word.find('zxynz', start)
if idx < 0:
break
else:
start = idx + 5
seq_bool[idx:idx+5] = True
df['seq_bool'] = seq_bool
编辑:
假设至少有一个已知永远不会出现在 中的字符df['0'],还有一种更短的方法:
假设T指标工作没问题:
word = ''.join(df['0'].values)
new_word = word.replace('zxynz', 'TTTTT')
df['seq_bool'] = np.array(list(new_word))=='T')
添加回答
举报