Skip to main content
 首页 » 编程设计

python之为 numpy 数组中的整行赋值

2025年05月04日32mate10pro

我有以下带有成绩的数组示例:

grades = np.array([[ 1,  1,  2,  -3],[ 4,  5,  6,  7],[ 8,  9, -3, 11],[12, 13, 14, 15]]) 

我想用“-3”标识元素并将它们的整行更改为该数字,例如结果:

grades = np.array([[ -3,  -3,  -3,  -3],[ 4,  5,  6,  7],[ -3,  -3, -3, -3],[12, 13, 14, 15]]) 

到目前为止我试过:

grades[np.argwhere(grades==-3)]=-3 

但我得到以下结果,其中还有其他行受到影响:

array([[-3, -3, -3, -3],[ 4,  5,  6,  7],[-3, -3, -3, -3],[-3, -3, -3, -3],[16, 17, 18, 19]]) 

有什么想法吗?谢谢!

请您参考如下方法:

首先使用简单的 == 和 numpy.any 找出哪一行包含 -3。现在索引这个 bool 数组并将 -3 分配给它,广播将处理其余部分。

>>> grades = np.array([[ 1,  1,  2,  -3],[ 4,  5,  6,  7],[ 8,  9, -3, 11],[12, 13, 14, 15]]) 
>>> grades[np.any(grades == -3, axis=1)] = -3 
>>> grades 
array([[-3, -3, -3, -3], 
       [ 4,  5,  6,  7], 
       [-3, -3, -3, -3], 
       [12, 13, 14, 15]])