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

标签 python arrays numpy rows

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

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]])

关于python - 为 numpy 数组中的整行赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33811576/

相关文章:

arrays - TypeScript 中混合类型的数组

python - 如何使用多个数组优化函数?

python - plotly 破折号 : Display a variable inside Markdown text

python - 你将如何删除python中这4行的重复性?

python - 不同的 linspaces 或 range 都包含精​​确的 0.0

c - 下标值既不是数组也不是指针函数错误

PHP将目录的多维数组转换为字符串

python - 从 numpy 数组中的每个字符串中提取第一个字母

使用 NumPy 数据类型的 Python 字典查找速度

Python/Numpy - 使用变量从二维数组中提取二维子数组