numpy.where 根据条件设置数组

Python 中图像表示为 numpy 数组 numpy.ndarray
,处理图像的时候想挑出特殊数值,可以用 np.where 实现,格式如下:
np.where(condition[, x, y]),会将满足条件的设为 x,不满足的设为 y,当然也可以设置 x,y,此时该函数相当于 np.asarray(condition).nonzero()。如果是1维数组,则相当于:

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

示例:
1D:

a = np.arange(10)
# 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])

2D:

# x, y 维度与 condition 相同
np.where([[True, False], [True, True]], [[1, 2], [3, 4]], [[9, 8], [7, 6]])
# array([[1, 8], [3, 4]])
# x, y 维度与 condition 不同
a = np.array([[0, 1, 2], [0, 2, 4], [0, 3, 6]])
np.where(a < 4, a, -1)  # -1 将广播(broadcast)
# array([[0, 1, 2], [0, 2, -1], [0, 3, -1]])

你可能感兴趣的:(numpy.where 根据条件设置数组)