# numpy.where的使用
# 函数介绍
numpy.where(condition, [x, y, ])
condition
: 条件x
:数组,shape
同condition
或支持广播y
:数组,shape
同condition
或支持广播
根据condition
从x
或y
中取数值,如果condition
条件为True
取x
对应位置的元素,否则取y
对应位置的元素。
当数组都是一维的时候,函数的功能等同于以下语句:
[xv if c else yv for c, xv, yv in zip(condition, x, y)]
# 示例
[x,y]
不为空
cond = [[True, False], [True, True]]
x = [[1, 2], [3, 4]]
y = [[9, 8], [7, 6]]
out = np.where(cond, x, y)
print(out)
# [[1, 8],
# [3, 4]]
可以看到,条件为True
的位置取了x
的值,为False
的位置取了y
的值。
[x,y]
为空
cond = [[True, True, False], [True, True, True]]
x, y = np.where(cond)
print(x,y)
# [0 0 1 1 1] [0 1 0 1 2]
print(np.stack((x, y)).T)
# array([[0, 0],
# [0, 1],
# [1, 0],
# [1, 1],
# [1, 2]])
可以看到当不传入[x,y]
数组时,np.where
返回的时condition
为True
位置的i
行j
列的坐标值。可以看到上面condition
对应的(0,0)/(0,1)/(1,0)
等5
个位置都是True
。
1.https://numpy.org/doc/stable/reference/generated/numpy.where.html (opens new window)