- 마스크 만들기에 대한
from __future__ import division # For Python 2.x
mask = (A == B) & (A==0)
C = np.where(mask, 0, A/B)
: (A==B)
모두의 마스크 것 A
과 B
사이의 요소와 (A==0)
의 요소는 모두 A
에 0 인 모든 요소의 마스크가 있습니다. 따라서, 결합 된 마스크가 (A == B) & (A==0)
인 경우, 우리는 A
과 B
이 모두 0 인 곳의 마스크를 갖습니다. 더 간단 같은 작업을 할 수있는 버전 어쩌면 쉽게 모두 A
및 B
에 제로를 확인하는 것입니다 이해하고 그것은 다음과 같습니다 np.where
의 이용에 대해
mask = (A==0) & (B==0)
, 그 구문은 다음과 같습니다
C = np.where(mask, array1, array2)
즉, 우리는 마스크에 따라 C
에 assinging 요소를 선택합니다. 해당 마스크 요소가 True
인 경우 array1
에서 해당 요소를 선택하고 그렇지 않은 경우 array2
에서 해당 요소를 선택합니다. 이것은 요소 단위로 이루어 지므로 출력은 C
입니다.
샘플 실행 -
In [48]: A
Out[48]:
array([[4, 1, 4, 0, 3],
[0, 4, 1, 4, 3],
[1, 0, 0, 4, 0]])
In [49]: B
Out[49]:
array([[4, 2, 2, 1, 4],
[2, 1, 2, 4, 2],
[4, 0, 2, 0, 3]])
In [50]: mask = (A == B) & (A==0)
In [51]: np.where(mask, 0, A/B)
Out[51]:
array([[ 1. , 0.5 , 2. , 0. , 0.75],
[ 0. , 4. , 0.5 , 1. , 1.5 ],
[ 0.25, 0. , 0. , inf, 0. ]])
이 https://docs.scipy.org에서보세요 /doc/numpy-1.12.0/reference/generated/numpy.divide.오류 처리를위한 HTML 및 https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.seterr.html#numpy.seterr . – max9111
다음과 같이 중복 될 수 있습니다. http://stackoverflow.com/questions/34257436/after-division-by-0-replace-nan-with-0-in-numpy-arrays – dudakl
가능한 중복 기준 [ 0, numpy 배열에서 0으로 NaN 바꾸기] (http://stackoverflow.com/questions/34257436/after-division-by-0-replace-nan-with-0-in-numpy-arrays) – dudakl