python - 什么是使数组中的下 n 项为 True 的最 Pythonic 方法,只要数组中有 True 值
问题描述
我有一个布尔数组
[False, False, True, True, False, True, False, False, False]
无论哪里有 True 值,我都想让数组的下 n 个元素为 True。如果在这种情况下我选择 n=2,这个数组就会变成
[False, False, True, True, True, True, True, True, False]
什么是最 Pythonic 的方式来做到这一点,而不使用 for 循环?
解决方案
一种快速的方法是使用np.convolve
:
rng = np.random.default_rng()
a = rng.integers(0,4,20)<1
a
# array([False, False, False, False, False, False, False, False, True,
# False, False, True, False, False, False, False, True, False,
# False, False])
n = 3
np.convolve(a,np.ones(n+1,bool),"full")[:-n]
# array([False, False, False, False, False, False, False, False, True,
# True, True, True, True, True, True, False, True, True,
# True, True])
推荐阅读
- swift - 将图像保存到 .documentsDirectory,并作为字符串存储在本地领域中的路径
- c++ - 二分查找的终点
- python - Pandas(本机)是否支持 mypy 类型提示?
- canvas - 是否可以在两个形状之间应用 clip() 或 globalCompositeOperation(),然后停止剪辑/合成?
- python - 如何在不知道有多少页面的情况下抓取所有页面
- php - 如何在php hash_pbkdf2中使用字节数组类型的nodejs crypto pbkdf2 salt
- html - 使用 after 伪类选择器后如何删除多余的元素?
- javascript - NodeJS Mongoose - 不从异步函数返回值
- c# - RichTextBox Select + SelectionColor 不起作用
- c# - 如何访问 WPF 中的嵌套属性?