본문 바로가기
파이썬

파이썬 numpy : true_divide에 잘못된 값이 있습니다.

by º기록 2020. 12. 2.
반응형

두 개의 numpy 배열이 있고 하나를 다른 배열로 나누고 동시에 제수가 0 인 항목이 0으로 대체되어야하는지 확인하고 싶습니다.

그래서 다음과 같이합니다.

log_norm_images = np.where(b_0 > 0, np.divide(diff_images, b_0), 0)

이것은 나에게 다음과 같은 런타임 경고를 제공합니다.

RuntimeWarning: invalid value encountered in true_divide

이제 무슨 일이 일어나고 있는지보고 싶었고 다음을 수행했습니다.

xx = np.isfinite(diff_images)
print (xx[xx == False])

xx = np.isfinite(b_0)
print (xx[xx == False])

그러나이 두 가지 모두 빈 배열을 반환합니다. 즉, 배열의 모든 값이 유한하다는 것을 의미합니다. 따라서 잘못된 값의 출처가 확실하지 않습니다. np.where 함수에서 b_0> 0을 확인하면 0으로 나누기를 처리한다고 가정합니다.

두 배열의 모양은 (96, 96, 55, 64) 및 (96, 96, 55, 1)입니다.

 

해결 방법

 

NAN , INF 또는 NINF 가 어딘가에 떠있을 수 있습니다. 이 시도:

np.isfinite(diff_images).all()
np.isfinite(b_0).all()

둘 중 하나 또는 둘 모두가 False 를 반환하는 경우 런타임 오류의 원인 일 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/27842884

 

 

반응형

댓글