2017-09-03 4 views
0

아주 기본적인 질문 :값을 변경

한다고 가정 내가 5 개 요소를 포함하는 1D NumPy와 배열 (A)이 있습니다

내가 추가 할 필요가

A = np.array([ -4.0, 5.0, -3.5, 5.4, -5.9])

을, 5를 0보다 작은 A의 모든 원소에 적용합니다. for-looping없이 이것을 수행하는 방법은 무엇입니까?

답변

4

이 마스크를 사용하여 수행 할 수 있습니다 : 그것은 작동

A[A < 0] += 5 

방법입니다 - 부울 배열을 반환 A < 0 표현. 각 셀은 일치하는 셀에 적용된 술어에 해당합니다. 현재 예제에서 :

A < 0 # [ True False True False True] 

그런 다음 작업은 조건부와 일치하는 셀에만 적용됩니다. 따라서이 예에서는 True 세포에서만 작동합니다.

A = np.where(A < 0, A + 5, A)

+0

그래, 작동합니다 –

0

내가 다른 대답을 발견했다. 감사.