我正在尝试根据包含在另一个 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/