You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按步长3屏蔽NumPy数组的指定索引元素?

按步长3屏蔽NumPy数组指定索引的元素

给定数组:

import numpy as np
import numpy.ma as ma

data = np.array([1,2,3,5,8,7,2,1,3,5,1,2,20])

需求是屏蔽数组中每间隔3个的索引(步长为3),期望输出为:

[1,2,3,--,8,7,--,1,3,--,1,2,--]

实现方法

你可以通过构建布尔掩码标记需要屏蔽的索引位置,再使用numpy.ma.masked_where()函数完成屏蔽操作。观察期望输出,需要屏蔽的是从索引3开始、步长为3的位置(即索引3、6、9、12),具体代码如下:

import numpy as np
import numpy.ma as ma

# 定义原始数组
x = np.array([1,2,3,5,8,7,2,1,3,5,1,2,20])
# 创建掩码:将目标索引位置设为True(表示需要屏蔽)
mask = np.zeros(len(x), dtype=bool)
mask[3::3] = True  # 从索引3开始,步长3选取所有目标索引
# 应用掩码生成屏蔽数组
mx = ma.masked_where(mask, x)

print(mx)

运行后输出:

[1 2 3 -- 8 7 -- 1 3 -- 1 2 --]

代码说明

  • mask[3::3] = True:利用NumPy切片语法,3::3表示从索引3起始,每隔3个元素选取一个索引,将这些位置的掩码值设为True。
  • ma.masked_where(mask, x):根据掩码数组,把x中对应掩码为True的元素屏蔽,生成最终的掩码数组。

内容的提问来源于stack exchange,提问作者Bhar Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:21:25