1. np.where(condition, x, y)
滿足條件(condition),輸出x,不滿足輸出y。
arr = np.arange(10) out = np.where(arr%2 == 1,-1,arr) print(out) 4 >>> [ 0 -1 2 -1 4 -1 6 -1 8 -1]
2. np.where(condition)
只有條件 (condition),沒有x和y,則輸出滿足條件 (即非0) 元素的坐標。這里的坐標以tuple的形式給出,通常原數組有多少維,輸出的tuple中就包含幾個數組,分別對應符合條件元素的各維坐標。
a = np.array([1,3,5,7,9]) print(np.where(a>5)) print(a[np.where(a>5)]) >>> (array([3, 4], dtype=int64),) [7 9]
3.給where()函數傳遞一個條件數組和兩個值或數組,對於條件數組中等價於True的位置,從第一個值或數組中取值進行替換,否則從第二個值或數組中取值進行替換。
x = np.array([1,2,3,4,5,6]) y = np.array([[1,0,3],[4,5,0]]) print(np.where(x%2 == 1,x,-x)) print(np.where(y%2 == 1,1,-1)) print(np.where(y,[30,40,50],[60,70,80]))
#y數組的第一行,1等價於true,取第二組參數30,0等價於false,取第三組參數60,3等價於true,取第二組參數50 >>> [ 1 -2 3 -4 5 -6] [[ 1 -1 1] [-1 1 -1]] [[30 70 50] [30 40 80]]