在python中使用另一个掩码修改布尔掩码

时间:2012-05-25 14:59:33

标签: python numpy

我想根据某些条件修改现有的掩码,以便在我的代码中进一步使用:

import pylab
mask1 = arange(10) > 5;
# [False False False False False False  True  True  True  True]
mask2 = arange(10) >8;
# [False False False False False False False False False  True]
mask1[mask2] = False
print mask1
[ True False False False False False  True  True  True  True]

如您所见,它是第一个被修改的元素,而不是预期的最后一个元素。这样做的正确方法是什么?

编辑:对不起我的坏,因为有些人指出代码是正确的,我不知道那里发生了什么,我只会删除这个问题。

2 个答案:

答案 0 :(得分:2)

您的代码没有任何问题。我试过了,它产生了正确的结果(这与你显示的结果不同)。

这是另一种做同样事情的方法:

mask1 &= ~mask2

答案 1 :(得分:0)

在我看来,你可以像这样构建面具:

mask1= logical_and(arange(10)>5,arange(10)<=8)

甚至更简单:

mask1 = (arange(10)>5) & (arange(10)<=8)