如何在小于numpy数组维度的bool数组的子集上索引numpy数组?

时间:2015-09-09 15:34:30

标签: python numpy

我的问题受到另一个问题的启发:Intersection of 2d and 1d Numpy array我正在寻找一种不使用in1d的简洁解决方案

设置就是这样。我有一个numpy array bools告诉我numpy array A我应该将哪些值设置为0,称为listed_array。但是,我想忽略listed_array的前3列中的信息,并且只将其设置为零,如lists_array的其他列中所示。

我知道以下内容不正确:

A[listed_array[:, 3:]] = 0

我也知道我可以通过调用listed_array来填充hstack的这个子集,这会产生正确的输出,但是是否有更简洁的内容?

1 个答案:

答案 0 :(得分:1)

如果我理解这个问题,应该这样做:

A[:, 3:][listed_array[:, 3:]] = 0

这是

的简明版本
mask3 = listed_array[:, 3:]
A3 = A[:, 3:]   # This slice is a *view* of A, so changing A3 changes A.
A3[mask3] = 0