2016-05-12 464 views
0

我有一個numpy的和一個布爾值替換陣列中的具體指標:如何使用布爾數組在Python

nparray = [ 12.66 12.75 12.01 13.51 13.67 ] 
bool = [ True False False True True ] 

我想通過除以3相同的值來代替nparray所有的值,其中bool是假。

我是一名學生,我對python索引很合適。任何意見或建議,非常感謝!

回答

0

使用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  ]) 
+0

謝謝你真是太棒了!這是一個非常有用的工具。 – morepenguins

+0

不客氣。 :) – ayhan

1

命名的數組布爾可能不是最好的主意。正如阿伊汗嘗試將它重命名爲BL或別的東西。

您可以使用numpy.where看到文檔here

nparray2 = np.where(bl == False, nparray/3, nparray) 
+0

非常感謝你!這真的很有幫助。 – morepenguins

0

只需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]