Python 二维过滤点 space
Python filter points in 2D space
我有两个数组 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
二维数组中:
>>> 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
我有两个数组 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
二维数组中:
>>> 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