Numpy中where函数

Posted by Wngzh on October 20, 2019

Numpy中where函数

一维矩阵

xv if c else yv
for c, xv, yv in zip(condition, x, y)

out = numpy.where(condition[, x, y])

可以拆写成(这里要求xy是同一形状,各维相等)

for i in range(x)
    if condition is ture
        out[i] = x
    else
        out[i] = y

官网给出的例子

>>> a = array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])

注意到这里用a做condition时,实际上使用的是对应位置的元素。

多维矩阵的情况

还是先看一个例子

>>> np.where([[True,False], [True,True]],
             [[1,2], [3,4]],
             [[9,8], [7,6]])

我倾向于描述为”按位取与相加”

>>> numpy.where([True,False],[[1,2],[3,4]],[[5,6],[7,8]])
array([[1, 6],
       [3, 8]])

这样修改后,适用情况变成了与一位类似的结果。