python - 根据另一个数组的值将 bool 矩阵的元素更改为 True

标签 python arrays numpy

我正在尝试根据包含在另一个 numpy 数组中的该行的索引值将 bool 矩阵中 False 元素的值更新为 True。
这是我的数组,change ,标识矩阵中需要更改的元素,mask_matrix :

import numpy as np
mask_matrix = np.zeros((20, 25), dtype=bool)

change = np.array([ 6., 22., 22., 22., 22., 21., 22., 21., 17., 21., 22., 21., 22.,
       21., 22., 12.,  7.,  7., 12., 17.])
所以change中的每一项告诉在 mask_matrix 中更改哪个元素.例如。 change[0] = 6.应该将 mask_matrix 中的第一行和第 6 列更改为 6
我知道我可以改变这样的项目,
mask[0,:][6] = True
但我需要找到一种更有效的方法来做到这一点。
有没有人对如何做到这一点有任何建议?最好是矢量化的。

最佳答案

这应该有帮助:

mask_matrix[np.arange(change.size),change]=True
这基本上是在 numpy 中使用高级索引来调用数组的行列元素。

关于python - 根据另一个数组的值将 bool 矩阵的元素更改为 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63384314/

相关文章:

c++ - 如何动态创建具有已知二维的 C++ 数组?

python - Numpy - 如何将向量索引数组转换为掩码?

python - 用python切割数据集

python - python 2.7 Tkinter tcl错误

python - Python/Cython 中的快速 n 维稀疏数组

ios - Objective-C 在多维数组中的指定索引处插入值

python - 矢量化批量图像像素查找 numpy 数组

Python 变量和 subprocess.call

android - 通过 Python 向应用程序发送推送/更新通知?

arrays - 使用 Transpose 函数会导致错误