我有一個numpy的和一個布爾值替換陣列中的具體指標:如何使用布爾數組在Python
nparray = [ 12.66 12.75 12.01 13.51 13.67 ]
bool = [ True False False True True ]
我想通過除以3相同的值來代替nparray
所有的值,其中bool
是假。
我是一名學生,我對python索引很合適。任何意見或建議,非常感謝!
我有一個numpy的和一個布爾值替換陣列中的具體指標:如何使用布爾數組在Python
nparray = [ 12.66 12.75 12.01 13.51 13.67 ]
bool = [ True False False True True ]
我想通過除以3相同的值來代替nparray
所有的值,其中bool
是假。
我是一名學生,我對python索引很合適。任何意見或建議,非常感謝!
使用boolean indexing
與~
作爲否定運算符:
arr = np.array([12.66, 12.75, 12.01, 13.51, 13.67 ])
bl = np.array([True, False, False, True ,True])
arr[~bl] = arr[~bl]/3
array([ 12.66 , 4.25 , 4.00333333, 13.51 , 13.67 ])
命名的數組布爾可能不是最好的主意。正如阿伊汗嘗試將它重命名爲BL或別的東西。
您可以使用numpy.where看到文檔here
nparray2 = np.where(bl == False, nparray/3, nparray)
非常感謝你!這真的很有幫助。 – morepenguins
只需Python中可以做這樣的:
nparray = [12.66, 12.75, 12.01, 13.51, 13.67]
bool = [True, False, False, True, True]
map(lambda x, y: x if y else x/3.0, nparray, bool)
,其結果是:
[12.66, 4.25, 4.003333333333333, 13.51, 13.67]
謝謝你真是太棒了!這是一個非常有用的工具。 – morepenguins
不客氣。 :) – ayhan