【问题标题】:Change elements of boolean matrix to True based on value from another array根据来自另一个数组的值将布尔矩阵的元素更改为 True
【发布时间】:2023-03-20 01:57:01
【问题描述】:

我正在尝试根据包含在另一个 numpy 数组中的该行的索引值将布尔矩阵中 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

但我需要找到一种更有效的方法。

有人对如何做到这一点有任何建议吗?最好是矢量化的。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    这应该会有所帮助:

    mask_matrix[np.arange(change.size),change]=True
    

    这基本上是在 numpy 中使用高级索引来调用数组的行列元素。

    【讨论】:

      猜你喜欢
      • 2015-07-23
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 2015-10-07
      相关资源
      最近更新 更多