numpy学习笔记3:条件表达式(where函数)。

1
2
3
4
5
import numpy as np
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array([True, False, True, True, False])
result = np.where(cond, xarr, yarr)
1
result
array([ 1.1,  2.2,  1.3,  1.4,  2.5])

where函数典型的用法是给予一个array产生另一个array,如下列:

1
arr = np.random.randn(4, 4)
1
arr
array([[-2.5264061 ,  0.31600076, -0.3584314 ,  1.1104543 ],
       [-0.36526226,  1.35603517, -0.17306545, -1.91238476],
       [ 0.89170697, -0.23551787, -0.78883913, -0.76915407],
       [-0.2233249 , -0.67969266, -0.64915308, -1.46796594]])
1
arr > 0
array([[False,  True, False,  True],
       [False,  True, False, False],
       [ True, False, False, False],
       [False, False, False, False]], dtype=bool)
1
np.where(arr > 0, 2, -2)  #以标量为基础指定需要产生的元素,并不是一定是数组
array([[-2,  2, -2,  2],
       [-2,  2, -2, -2],
       [ 2, -2, -2, -2],
       [-2, -2, -2, -2]])
1
np.where(arr > 0, 2, arr)  #也可以同时使用标量和数组为基,产生新的数组
array([[-2.5264061 ,  2.        , -0.3584314 ,  2.        ],
       [-0.36526226,  2.        , -0.17306545, -1.91238476],
       [ 2.        , -0.23551787, -0.78883913, -0.76915407],
       [-0.2233249 , -0.67969266, -0.64915308, -1.46796594]])