numpy.where¶
-
numpy.
where
(condition[, x, y])¶ 根据条件,从x或y返回元素。
如果只给出条件,则返回
condition.nonzero()
。参数: condition:array_like,bool
当为True时,产量x,否则产生y。
x,y:array_like,可选
要选择的值。x和y需要具有与条件相同的形状。
返回: out:ndarray的数组或元组
如果指定x和y,则输出数组包含x的元素,其中条件从y。
如果仅给出条件,则返回元组
condition.nonzero()
,其中条件为True。笔记
如果给定x和y且输入数组是1-D,
where
等效于:[xv if c else yv for (c,xv,yv) in zip(condition,x,y)]
例子
>>> np.where([[True, False], [True, True]], ... [[1, 2], [3, 4]], ... [[9, 8], [7, 6]]) array([[1, 8], [3, 4]])
>>> np.where([[0, 1], [1, 0]]) (array([0, 1]), array([1, 0]))
>>> x = np.arange(9.).reshape(3, 3) >>> np.where( x > 5 ) (array([2, 2, 2]), array([0, 1, 2])) >>> x[np.where( x > 3.0 )] # Note: result is 1D. array([ 4., 5., 6., 7., 8.]) >>> np.where(x < 5, x, -1) # Note: broadcasting. array([[ 0., 1., 2.], [ 3., 4., -1.], [-1., -1., -1.]])
查找良好值中x元素的索引。
>>> goodvalues = [3, 4, 7] >>> ix = np.in1d(x.ravel(), goodvalues).reshape(x.shape) >>> ix array([[False, False, False], [ True, True, False], [False, True, False]], dtype=bool) >>> np.where(ix) (array([1, 1, 2]), array([0, 1, 1]))