根据一列中的值屏蔽 2D numpy 数组
假设我有以下 numpy 数组:
a = [[1, 5, 6],
[2, 4, 1],
[3, 1, 5]]
我想屏蔽第一列中包含 1
的所有行。也就是说,我想
[[--, --, --],
[2, 4, 1],
[3, 1, 5]]
使用 numpy 掩码数组操作可以做到这一点吗?一个人怎样才能做到呢?
谢谢。
Suppose I have the following numpy array:
a = [[1, 5, 6],
[2, 4, 1],
[3, 1, 5]]
I want to mask all the rows which have 1
in the first column. That is, I want
[[--, --, --],
[2, 4, 1],
[3, 1, 5]]
Is this possible to do using numpy masked array operations? How can one do it?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以通过以下方式创建所需的掩码
和掩码数组
You can create the desired mask by
and the masked array by
您可以简单地创建一个空掩码,然后使用 numpy-broadcasting (如 @eumiro 所示),但使用元素和按位“或”运算符
|
:进一步解释:
这种方法的另一个优点是它不需要使用潜在昂贵的乘法或 np.repeat ,所以它应该相当快。
You could simply create an empty mask and then use numpy-broadcasting (like @eumiro showed) but using the element- and bitwise "or" operator
|
:A bit further explanation:
One further advantage of this approach is that it doesn't need to use potentially expensive multiplications or
np.repeat
so it should be quite fast.