Python,与条件数组相反

时间:2016-05-26 18:50:18

标签: python arrays numpy conditional

我有两个numpy数组,让我们说AB

In [3]: import numpy as np

In [4]: A = np.array([0.10,0.20,0.30,0.40,0.50])

In [5]: B = np.array([0.15,0.23,0.33,0.41,0.57])

我应用这样的条件:

In [6]: condition_array = A[(B>0.2)*(B<0.5)]

In [7]: condition_array
Out[7]: array([ 0.2,  0.3,  0.4])

现在我如何与condition_array相反?

即。数组A的数组B的值是 NOT GREATER THAN 0.2 and NOT LESS THAN 0.5

In [8]: test_array = A[(B<0.2)*(B>0.5)]

In [9]: test_array
Out[9]: array([], dtype=float64)

以上似乎不起作用!

2 个答案:

答案 0 :(得分:3)

您可以使用~运算符反转数组...

A[~((B>0.2)*(B<0.5))]

请注意,您使用*似乎意味着要做出合乎逻辑的&#34;和&#34;。许多人宁愿你使用二进制&#34;和&#34;运算符(&)代替 - 就个人而言,我更喜欢更明确:

A[~np.logical_and(B > 0.2, B < 0.5)]

或者,以下工作也是如此:

A[(B <= 0.2) | (B >= 0.5)]
A[np.logical_or(B <= 0.2, B >= 0.5)]

答案 1 :(得分:2)

De Morgan's Law

A[np.logical_or(~(B > 0.2), ~(B < 0.5)]

或者

A[np.logical_or(B <= 0.2, B >= 0.5)]