x = np.arange(1,4)
y = np.arange(11,14)
z = np.arange(3,10,3)
print z
arr = np.where(z>8,x,y)
print arr
# [11 12 3]
arr1 = np.where(z>5,x,y)
print arr1
# [11 2 3]
arr2 = np.where(z>1,x,y)
print arr2
# [1 2 3]
where的定义为x if condition else y
如果满足第一个参数的条件(True)就 执行 x
如果不满足第一个参数的条件(False)就 执行 y
x = [1,2,3]
y = [11,12,13]
z = [3,6,9]
上面代码的输出可以发现当z>1,为全真,那么输出应该就是x [1 2 3]
当z>8,因为z为[3,6,9]只有9满足,所以前两项为False 以y值来补充,结果自然为[11,12,3],最后一项满足条件为True,所以最后一项就是x的最后一项
当z>5,此时z的前一项不满足,后两项满足,所以前一项取y,后两项取x,结果为[11,2,3]