Python如何将numpy数组指定列(列号由数组定义)的值替换为0
NumPy 将指定列批量替换为0的实现方法
直接使用NumPy的高级索引即可一步完成需求,无需编写循环遍历,运行效率更高。
核心实现代码
import numpy as np a = np.array([[ 1, 2, 3, 4], [ 1, 2, 1, 2], [ 0, 3, 2, 2]]) b = np.array([1,3]) # 选中所有行、b中存储的列索引对应的位置,统一赋值为0 a[:, b] = 0 print(a)
代码说明
- 切片语法
a[:, b]中,第一个位置的:代表选中数组的所有行,第二个位置传入存储列索引的数组b,即可精准选中所有需要替换的列区域 - 直接对选中的切片区域赋值0,就会把对应位置的所有元素批量替换
- 如果不希望修改原始数组
a,可以先创建副本再操作:# 先复制原数组,再替换副本的列,原数组不会被改动 a_modified = a.copy() a_modified[:, b] = 0
运行输出
执行代码后得到的结果和预期完全一致:
[[1 0 3 0] [1 0 1 0] [0 0 2 0]]
注意:NumPy数组的列索引从0开始计数,传入
b数组的索引值需要符合这个计数规则,避免替换错列。
内容的提问来源于stack exchange,提问作者r.carnahan
相关产品推荐
相关产品推荐

