2017-03-18 73 views
2

我有一個由1和0組成的numpy數組,隨機排列。將numpy數組的值從零更改爲-1

numpy.array([[0,1,1],[1,0,0]]) 

如何將零更改爲-1而不更改零?

+1

'a [a == 0] = -1'?閱讀'掩蔽'可能會有所幫助。 – Divakar

+1

或'a = 2 * a - 1'。 –

回答

1

正如在the comments中已經指出的,基本上有兩種方法來替換這些值。或者使用boolean array indexing更改數值就地:

>>> import numpy as np 
>>> arr = np.array([[0,1,1],[1,0,0]]) 
>>> arr[arr==0] = -1 
>>> arr 
array([[-1, 1, 1], 
     [ 1, -1, -1]]) 

你可能要檢查的arr == 0中間步驟(創建遮罩)和arr[arr == 0](獲得數組,其中面具是真正的唯一的值,在這種情況下值爲0)來理解發生了什麼。

或者,如果你想創建該數組的副本替換有np.where

>>> np.where(arr==0, -1, arr) 
array([[-1, 1, 1], 
     [ 1, -1, -1]]) 

這將創建一個新的數組,並使用第二個參數只要條件(第一個參數)爲真而否則使用第二個參數項。