如何用一维数组索引对二维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
相关产品推荐
相关产品推荐

