gpt4 book ai didi

python - 在 numpy 数组中找到一段 Trues

转载 作者:太空狗 更新时间:2023-10-30 00:55:16 28 4
gpt4 key购买 nike

有没有一种好方法可以在 numpy boolean 数组中找到一段 True?如果我有一个像这样的数组:

x = numpy.array([True,True,False,True,True,False,False])

我可以得到一个索引数组吗:

starts = [0,3]
ends = [1,4]

或任何其他适当的方式来存储此信息。我知道这可以通过一些复杂的 while 循环来完成,但我正在寻找更好的方法。

最佳答案

您可以用 False 填充 x(一个在开头,一个在结尾),然后使用 np.diff . “diff”为 1 表示从 False 到 True 的转换,-1 表示从 True 到 False 的转换。

惯例是将范围的结尾表示为最后一个 之后的索引。此示例符合约定(您可以轻松使用 ends-1 而不是 ends 来获取问题中的数组):

x1 = np.hstack([ [False], x, [False] ])  # padding
d = np.diff(x1.astype(int))
starts = np.where(d == 1)[0]
ends = np.where(d == -1)[0]
starts, ends
=> (array([0, 3]), array([2, 5]))

关于python - 在 numpy 数组中找到一段 Trues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853322/

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