2017-12-16 14 views
0

벡터 shapefile 위에 마스크를 만들고 관련 영역을 확대하는 또 다른 마스크를 만들었습니다. 이 새로운 마스크로 가지고있는 문제는 마스크 된 영역이 내가 원하는 비트이므로, 어떻게 든 그것을 반전시켜야한다는 것입니다. (나는 NP로 NumPy와 수입 주)가면으로 배열 된 numpy 배열을 반전하는 방법은 무엇입니까?

이것은 내가 2 마스크에 사용되는 코드입니다 :

catchment_mask = gmask[minrow:minrow+nrow, mincol:mincol+ncol] 
catchment_mask = np.where(catchment_mask == 1, 1., np.nan) 

내가 그것을 반전이 코드를 사용하여 시도했지만 그것은을 적용하고 전체 영역의 마스크 :

inverse_catchment_mask = (np.logical_not(catchment_mask)) 

나는 어떤 제안이라도 정말로 감사 할 것입니다! 당신의 cachement_mask 부울 구성하는 경우

을 예상하지만 당신은 더 신중을 반전 할 필요가 귀하의 마스크, 1 또는 NaN 구성으로

+0

들여 쓰기가 꺼져 있습니다. 'np.ma', MaskedArray 서브 클래스가 있습니다 만, 그것이 당신이 가진 것이라고는 생각하지 않습니다. 당신의'mask '가'gmask'의 조각 인 것처럼 보이지만,'where'를 사용하여 새로운 배열을 만듭니다. 왜? 더 이상 '전망'이 아닙니다. 왜'np.nan'인가? 'logical_not'은'False'입니다. – hpaulj

답변

0

은 (참/거짓) 값이, 당신은 솔루션 logical_not에 따라 작동합니다. 예를 들어 :

inverse_cachement_mask = np.where(np.isnan(cachement_mask), 1, np.nan) 

이것은 1NaN 값을 교환, 원래 마스크의 역을 생성합니다.

+0

설명해 주셔서 감사합니다. np.where를 제거하고 관련 인수로 logical_not을 변경했으며 예상대로 부울 값으로 반전했습니다. – JaneOz