gpt4 book ai didi

Python:从 bool 数组中获取最后 n 个真值

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:56 24 4
gpt4 key购买 nike

我有一个 bool 数组,我想将其转换为一个数组,其中只有 last_n_trues True 值仍然是 True。一个简单的例子:

>>> boolean_array = [False, False, True, True, True, False, False]
>>> last_n_trues = 2
>>> desired_output = [False, False, False, True, True, False, False]

我的方法:

>>> import numpy as np
>>> idxs_of_trues = np.where(boolean_array)[0]
array([2, 3, 4], dtype=int64)

>>> idxs_of_trues_last_n = idxs_of_trues[-last_n_trues:]
array([3, 4], dtype=int64)

>>> [x in idxs_of_trues_last_n for x in range(0, len(boolean_array))]
[False, False, False, True, True, False, False]

是否有更快的方法?特别是列表理解对我来说似乎很复杂......

最佳答案

你应该能够简单地使用 np.where

In [116]: x
Out[116]: array([False, False, True, True, True, False, False], dtype=bool)

In [117]: x[np.where(x)[0][:-2]] = False

In [118]: x
Out[118]: array([False, False, False, True, True, False, False], dtype=bool)

这只是将所有不是最后 2 个的 True 替换为 False

这仅在 xnp.array 时有效,因此请在尝试之前验证这一点。

关于Python:从 bool 数组中获取最后 n 个真值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50148845/

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