2014-05-13 4 views
0

numpy.seterr은 부동 소수점 예외 발생시 발생하는 상황을 사용자 정의 할 수 있습니다. 특정 콜백을 호출하면 예외를 트리거 한 특정 값에 대한 정보를 제공하지 않는 것처럼 보입니다. 워드 프로세서에서 예제 중 하나를 재사용numpy 부동 소수점 오류를 트리거하는 값 검색

,

def err_handler(type, flag): 
    print "Floating point error (%s), with flag %s" % (type, flag) 
saved_handler = np.seterrcall(err_handler) 
save_err = np.seterr(all='call') 
np.array([1, 2, 3])/0.0 

Floating point error (divide by zero), with flag 1 
array([ Inf, Inf, Inf]) 

err_handler 콜백 플래그 1. 시도한 작업과 함께 (0으로 나누기) 지점 오류 부동 "뭔가를 인쇄 할 수 있다면 좋을 텐데 : 배열 ([1, 2, 3])/0.0이다.

이 문제를 해결하는 데 도움이 될 것입니다!

답변

0

스택을 인쇄하는 데 추적을 사용하는 것이 어떻습니까?

import numpy as np 

def err_handler(type, flag): 
    import traceback 
    traceback.print_stack(limit=2) 
    print "Floating point error (%s), with flag %s" % (type, flag) 

saved_handler = np.seterrcall(err_handler) 
save_err = np.seterr(all='call') 
a = np.array([1, 2, 3]) 
b = 0.0 
a/b 
+0

실제로이 작업을 수행하고 있지만 실제로는 fp 오류가 발생한 변수의 이름 또는 값만 제공하지는 않습니다. (물론 스택을 내성적으로 검사하여 정보를 수동으로 추출 할 수는 있지만 좀 더 단순하게하기를 바랬습니다 ...) – antony