Skip to main content
 首页 » 编程设计

Python,与条件数组相反

2025年05月04日25sharpest

我有两个 numpy 数组,比方说 A 和 B

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) 

以上似乎不起作用!

请您参考如下方法:

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

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

请注意,您对 * 的使用似乎是为了执行逻辑“与”。许多人更喜欢您使用二元“与”运算符 (&)——就个人而言,我更喜欢更明确:

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)]