我有一个1D数组:

arr = np.array([0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 2, 3, 0, 0, 1, ...], dtype='uint16')

我想创建一个mask数组,它在任何地方都是True,值大于2的+/-N索引,产生以下结果(对于N=3)

mask = [F, T, T, T, T, T, T, T, F, F, T, T, T, T, T, T, T, F, F, F, T, T, T, T, T, T, T, ...]

(注意,为了便于阅读,我使用了T/F)

我需要这是相当快的,因为我的实际数组是数百万点长,N可能是500左右.

编辑:similar problem

推荐答案

找到大于2的元素,然后将其周围的元素设置为True:

a = np.array([0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 3, 0, 0, 2, 0])

N = 3
mask = a > 2
center = np.where(mask)[0]
mask[np.ravel(center - np.arange(1, 1 + N).reshape(-1, 1))] = True
mask[np.ravel(center + np.arange(1, 1 + N).reshape(-1, 1))] = True

Python相关问答推荐

比较两个数据帧并并排附加结果(获取性能警告)

如何比较numPy数组中的两个图像以获取它们不同的像素

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

Django mysql图标不适用于小 case

运行Python脚本时,用作命令行参数的SON文本

如何过滤包含2个指定子字符串的收件箱列名?

在两极中过滤

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

使用BeautifulSoup抓取所有链接

未调用自定义JSON编码器

(Python/Pandas)基于列中非缺失值的子集DataFrame

为什么Python内存中的列表大小与文档不匹配?

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

Polars表达式无法访问中间列创建表达式

类型对象';敌人';没有属性';损害';

与同步和异步客户端兼容的Python函数

递归链表反转与打印语句挂起

如何通过特定导入在类中执行Python代码

如何将django url参数传递给模板&S url方法?

IpyWidget Select 框未打开