繁体   English   中英

Python,条件数组的对面

[英]Python, opposite of conditional array

我有两个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的反义词?

即数组BNOT GREATER THAN 0.2 and NOT LESS THAN 0.5的数组A的值?

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

根据德摩根定律

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM