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

如何按索引对numpy二维数组进行掩码操作?

Numpy 二维数组保留指定索引区间其余设为nan的实现方案

直接通过numpy的切片索引操作即可实现,全程不改变数组形状、原有索引和总长度,实现逻辑如下:

前置说明

假设你的二维数组命名为arr,第一个维度长度为800,形状为(800, 任意长度)。
注意:numpy切片为左闭右开规则,若你需要保留的是600到700的闭区间(包含600和700两个端点),切片写为600:701;若为左闭右开区间(包含600不包含700),切片写为600:700即可。

实现代码

方法1:直接给非目标区域赋值nan(最简便)

直接覆盖不需要保留的区域,不会改动目标区间的原有值:

import numpy as np

# 此处为模拟生成的测试数组,替换为你自己的数组即可
arr = np.random.rand(800, 5)

# 保留600~700闭区间元素,其余设为nan
arr[:600, :] = np.nan
arr[701:, :] = np.nan

方法2:备份目标区间后回写(逻辑更稳妥,避免赋值失误)

适合对索引范围不熟悉的场景,不会误改目标区间数据:

import numpy as np

arr = np.random.rand(800, 5)

# 1. 备份需要保留的区间数据
keep_segment = arr[600:701, :].copy()
# 2. 全数组设为nan
arr[:] = np.nan
# 3. 把备份数据写回原索引位置
arr[600:701, :] = keep_segment

验证说明

操作完成后可以通过以下代码验证结果:

  • 查看数组形状是否不变:print(arr.shape) 输出应为(800, 你的第二维度长度)
  • 查看非目标区域是否为nan:print(np.all(np.isnan(arr[:600]))) 输出应为True
  • 查看目标区域是否保留原有值:print(np.all(arr[600:701] == keep_segment)) 输出应为True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:05