python – 在numpy数组中获取具有最小长度的相同条目的序列范围

考虑一个条目,其条目仅由-1或1组成.如何获得仅包含1且最小长度为t的所有切片的范围(例如t = 3)例:a=np.array([-1,-1,1,1,1,1,1,-1,1,-1,-1,1,1,1,1], dtype=int) a array([-1, -1, 1, 1, 1, 1, 1, -1,

考虑一个条目,其条目仅由-1或1组成.如何获得仅包含1且最小长度为t的所有切片的范围(例如t = 3)

例:

>>>a=np.array([-1,-1,1,1],dtype=int)
>>> a
array([-1,1])

然后,期望输出fort = 3将是[(2,7),(11,15)].
最佳答案
使用np.diffnp.where的一种方法 –

# Append with `-1s` at either ends and get the differentiation
dfa = np.diff(np.hstack((-1,a,-1)))

# Get the positions of starts and stops of 1s in `a`
starts = np.where(dfa==2)[0]
stops = np.where(dfa==-2)[0]

# Get valid mask for pairs from starts and stops being of at least 3 in length
valid_mask = (stops - starts) >= 3

# Finally collect the valid pairs as the output
out = np.column_stack((starts,stops))[valid_mask].tolist()

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部