2017-03-18 1 views
2

나는 무작위로 배열 된 1과 0으로 구성된 열등 배열을가집니다.numpy 배열 값을 0에서 -1로 변경합니다.

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

어떻게 0을 변경하지 않고 0으로 변경할 수 있습니까?

+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]]) 

당신은 마스크가 True 배열의 값을 받고 arr[arr == 0] (마스크를 생성)이 arr == 0의 중간 단계 (확인 할 수 있습니다, 이 경우 값이 0 인 경우) 무슨 일이 일어나고 있는지 이해해야합니다.

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

이 새로운 배열을 생성하고 조건 (첫 번째 인수)가 사실이고 어디든지 두 번째 인수를 사용하면 값으로 배열의 복사본을 만들려면

는 또는 np.where이 교체 그렇지 않으면 두 번째 인수 항목을 사용합니다.

관련 문제