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]])
这样修改后,适用情况变成了与一位类似的结果。