2017-03-18 7 views
2

私は、ランダムに配列された1と0からなるnumpy配列を持っています。numpyの配列値を0から-1に変更する

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

ゼロを-1に変更するにはどうすればよいですか?

+1

'a [a == 0] = -1'? 'マスキング'を読んで助けてくれるかもしれません。 – Divakar

+1

または 'a = 2 * a - 1'。 –

答えて

1

すでに指摘したように、the commentsには、基本的に値を置き換える2つの方法があります。インプレースの値を変更するには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]]) 

あなたはマスクがTrueで、配列の値のみを取得する((マスクを作成する)arr == 0ための中間ステップを確認したいとarr[arr == 0]かもしれません、この場合は値が0です)、何が起こっているのかを理解してください。これは、新しい配列を作成し、条件(最初の引数)がTrueでどこに二番目の引数を使用しています

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

と:

それとも、値の配列のコピーを作成したい場合はnp.whereがある置き換えそれ以外の場合は、2番目の引数itemsを使用します。

関連する問題