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

如何用一维数组索引对二维NumPy数组实现无循环指定位置减1

NumPy无循环实现按行指定列元素减1

你可以利用NumPy的高级索引特性来实现无循环的批量修改,这比循环方式更高效,尤其适合处理大规模数组。

实现代码

import numpy as np

# 初始化数组
a = np.array([[1,1,1],[1,1,1],[1,1,1]])
b = np.array([0,1,2])

# 无循环修改指定位置元素
a[np.arange(len(b)), b] -= 1

# 查看结果
print(a)

代码解释

  • np.arange(len(b))生成与b长度一致的行索引数组[0,1,2],和b中的列索引一一配对,精准定位到每行中需要修改的元素位置。
  • 直接通过-=1对这些定位到的元素执行减1操作,一次性完成所有修改,避免了循环的开销。

执行后输出结果:

[[0 1 1]
 [1 0 1]
 [1 1 0]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:55:14