Python,与条件数组相反
Python, opposite of conditional array
我有两个 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))]
请注意,您对 *
的使用似乎是为了执行合乎逻辑的 "and"。许多人更喜欢您使用二进制 "and" 运算符 (&
) 来代替——就个人而言,我更喜欢更明确:
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)]
A[np.logical_or(~(B > 0.2), ~(B < 0.5)]
或者
A[np.logical_or(B <= 0.2, B >= 0.5)]
我有两个 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))]
请注意,您对 *
的使用似乎是为了执行合乎逻辑的 "and"。许多人更喜欢您使用二进制 "and" 运算符 (&
) 来代替——就个人而言,我更喜欢更明确:
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)]
A[np.logical_or(~(B > 0.2), ~(B < 0.5)]
或者
A[np.logical_or(B <= 0.2, B >= 0.5)]