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

如何在数组/张量中对指定索引之外的其余索引进行索引操作?

问题:为NumPy数组中除指定索引列外的所有列添加值c

首先定义原始数组和索引:

import numpy as np

x = np.array([[0, 1, 0, 0, 0],
              [0, 0, 0, 1, 0],
              [1, 0, 0, 0, 0]])
idx = np.array([3, 1, 0])  # 索引范围对应x的列索引(0到列数-1)

我们已经知道,要为x中idx指定的对应位置添加值c,可以用以下代码:

c = 2  # 示例值,可替换为任意数值
x[range(3), idx] += c

执行后得到的结果是:

x = np.array([[  0,  1,  0,  c,  0],
              [  0,  c,  0,  1,  0],
              [1+c,  0,  0,  0,  0]])

现在需要实现的是:为x中除idx指定索引之外的所有列添加值c,期望得到的结果如下:

x = np.array([[c, 1+c,  c,   0,  c],
              [c,   0,  c, 1+c,  c],
              [1,   c,  c,   c,  c]])

解决方案

可以通过两种实用方式实现:

方法一:全局加c后回退指定位置

先对整个数组的所有元素加上c,再将idx指定的位置减去c,等价于仅给非指定列添加c:

x += c
x[range(x.shape[0]), idx] -= c

方法二:利用掩码数组定位目标区域

创建与x形状一致的布尔掩码,将idx指定的位置设为False,其余位置设为True,再通过掩码给对应区域加c:

mask = np.ones(x.shape, dtype=bool)
mask[range(x.shape[0]), idx] = False
x[mask] += c

两种方法都能得到期望结果,可根据实际场景选择使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:24:21