2016-10-18 3 views
0

에 대한 요소의 값을 수정 한번수, 액세스 및 NumPy와 배열

import numpy as np 
nx=3 
ny=3 
label = np.ones((nx, ny)) 
mask=np.zeros((nx,ny),dtype=np.bool) 
label[mask]=0 

생성 된 mask 다음 코드 세그먼트를보고 내가 몇 가지 요소를 지정하려는 경우 부울 배열

[[False False False] 
[False False False] 
[False False False]] 

입니다 예를 들어, 나는 mask[2,1]="True"을 사용하려고 시도했지만 예상대로 해당 항목을 변경하지 않으면 작동하지 않습니다. numpy 배열의 값을 변경하고 액세스 할 수있는 올바른 방법은 무엇입니까? 또한 label[mask]=0의 기능은 무엇입니까? 각각의 마스크 엔트리 값을 사용하여 해당하는 라벨 엔트리 값을 할당하려고합니다.

+1

어쩌면에 읽어 ['부울-indexing'] (https://docs.scipy.org/doc/numpy-1.10.1/user/basics.indexing.html#boolean-or-mask- 인덱스 배열)? – Divakar

+0

'label [mask] = 0'은'mask' 배열이 모두'false'이므로 아무 것도하지 않습니다. 마스크의 일부 요소가 'true'이면이 방법이 효과적입니다. accessibility와'np.array'에 값을 할당하는 것은 필자가 생각하는 한 파이썬리스트를 수렴하는 것과 같은 구문입니다. 배열을 가진 배열을 처리하는 옵션도 있습니다. –

답변

0

여기에 이해할 수있는 몇 가지 의견이 담긴 코드 스 니펫이 있습니다. @Divakar가 제공 한 링크를 살펴보고 boolean-indexing을 살펴 보시기 바랍니다.

# a two dimensional array with random values 
arr = np.random.random((5, 5)) 

# assign mask to a two dimensional array (same shape as arr) 
# that has True for every element where the corresponding 
# element in arr is greater than 0.5 
mask = arr > 0.5 

# assign all the elements in arr that are greater than 0.5 to 0 
arr[mask] = 0 

# the above can be more concisely written as: 
arr[arr>0.5] = 0 

# you can change the mask any way you want 

# here I invert the mask 
inv_mask = np.invert(mask) 

# assign all the values in arr less than 0.5 to 1 
arr[inv_mask] = 1