原文:https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html
校对:(虚位以待)
numpy.
where
(condition[, x, y])根据条件,从x或y返回元素。
如果只给出条件,则返回condition.nonzero()
。
参数: | condition:array_like,bool
x,y:array_like,可选
|
---|---|
返回: | out:ndarray的数组或元组
|
笔记
如果给定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]))