numpy按1d数组的范围屏蔽2d数组行

ztigrdn8  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(112)

我有一个1d数组,它表示有效值的范围。

ranges = np.array([1, 2, 0])

我有多个2D数组,它们有值,我想根据上面的范围通过索引屏蔽它们。

matrixes = np.array([[0, 1, 2],
                     [3, 4, 5],
                     [6, 7, 8]])

因此,“范围”中的每个值表示“矩阵”中具有有效值的行数(列彼此对应),因此掩码将返回如下内容:

([[True,  True,  False],
                [False, True,  False],
                [False, False, False]])

第一列有1个有效值,第一个。第二列有2个有效值...等等。
我尝试了其他几个主题,但不知道如何做到这一点...例如:How to properly mask a numpy 2D array?

xeufq47z

xeufq47z1#

使用广播:

out = np.arange(matrixes.shape[0])[:,None]<ranges

输出:

[[ True  True False]
 [False  True False]
 [False False False]]

相关问题