【发布时间】:2017-10-06 08:22:57
【问题描述】:
我有两个数组 x=[1,2,3,4] 和 y=[1,0,0,1] 描述二维点 (x,y)。我想知道x>2 和 y==1 有多少个元素。最简单的方法是什么(没有任何循环)?
是否有可能做类似x[x>2] 的事情,但有两个条件?
【问题讨论】:
标签: python arrays element multipleselection
我有两个数组 x=[1,2,3,4] 和 y=[1,0,0,1] 描述二维点 (x,y)。我想知道x>2 和 y==1 有多少个元素。最简单的方法是什么(没有任何循环)?
是否有可能做类似x[x>2] 的事情,但有两个条件?
【问题讨论】:
标签: python arrays element multipleselection
假设这些是 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]
【讨论】:
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
【讨论】: