Python,与条件数组相反

2024-10-06 12:30:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个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的值,其中数组BNOT 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)

上面的似乎不起作用!你知道吗


Tags: intestimportnumpyasnpnot数组
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)]

可以使用~运算符反转数组。。。你知道吗

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

相关问题 更多 >