如何构造高级切片的逻辑表达式

时间:2012-05-05 18:26:04

标签: python numpy

我想找出一种更清洁的方法来做到以下几点:

import numpy

a = np.array([1,2,4,5,1,4,2,1])

cut = a == (1 or 2)
print cut

[ True False False False  True False False  True]

以上当然是一个简化的例子。表达式(1 or 2)可能很大或很复杂。首先,我想这样概括一下:

cutexp = (1 or 2)
cut = a == cutexp

也许, cutexp 可以变成一个功能或者其他东西,但我不知道从哪里开始寻找。

2 个答案:

答案 0 :(得分:3)

您也可以尝试numpy.in1d。说

>>> a = np.array([1,2,4,5,1,4,2,1])
>>> b = np.array([1,2]) # Your test array
>>> np.in1d(a,b)
array([ True,  True, False, False,  True, False,  True,  True], dtype=bool)

答案 1 :(得分:2)

>>> (a == 2) | (a == 1)
array([ True,  True, False, False,  True, False,  True,  True], dtype=bool)