np.where 函数是三元表达式 x if condition else y的矢量化版本
result = np.where(cond,xarr,yarr)
当符合条件时是x,不符合是y,常用于根据一个数组产生另一个新的数组。
栗子:假设有一个随机数生成的矩阵,希望将所有正值替换为2,负值替换为-2
arr = np.random.randn(4,4)
arr
np.where(arr>0,2,-2)
arr = np.random.randn(4,4)
arr
Out[51]:
array([[ 0.04150406, 1.27790573, -0.25917274, -1.25604622],
[ 0.8797799 , 1.84828821, -1.21709272, -0.41767649],
[-0.71758894, -0.70595454, 1.72330333, 0.18559916],
[-2.19529605, 2.11615947, -0.13563148, -1.41532576]])
np.where(arr>0,2,-2)
Out[52]:
array([[ 2, 2, -2, -2],
[ 2, 2, -2, -2],
[-2, -2, 2, 2],
[-2, 2, -2, -2]])