二维空间中的Python过滤点

二维空间中的Python过滤点,python,arrays,element,multipleselection,Python,Arrays,Element,Multipleselection,我有两个数组x=[1,2,3,4]和y=[1,0,0,1]描述二维点(x,y)。我想知道有多少元素具有x>2和y==1。最简单的方法是什么(没有任何循环)? 除了两种情况,是否可以执行类似于x[x>2]的操作 假设这些是numpy数组,因为x[x>2]是numpy语法,所以只需要and(&)操作符: meet_cond = (x > 2) & (y == 1) how_many = meet_cond.sum() which_x = x[meet_cond] which_y =

我有两个数组
x=[1,2,3,4]
y=[1,0,0,1]
描述二维点(x,y)。我想知道有多少元素具有
x>2
y==1
。最简单的方法是什么(没有任何循环)?
除了两种情况,是否可以执行类似于
x[x>2]
的操作

假设这些是numpy数组,因为
x[x>2]
是numpy语法,所以只需要and(
&
)操作符:

meet_cond = (x > 2) & (y == 1)
how_many = meet_cond.sum()

which_x = x[meet_cond]
which_y = y[meet_cond]

如果
x
y
属于点,则可能需要将它们打包到
np
2D数组中:

>>> import numpy as np
>>> x = np.array([1, 2, 3, 4])
>>> y = np.array([1, 0, 0, 1])
>>> xy = np.array([x, y]).T
>>> xy[(x > 2) & (y == 1)]
array([[4, 1]])
>>> xy[(xy[:, 0] > 2) & (xy[:, 1] == 1)]
array([[4, 1]])
>>> np.count_nonzero((xy[:, 0] > 2) & (xy[:, 1] == 1))
1

很酷。展示
meet\u cond
的样子可能会很有趣。