>

numpy.allclose 는 다음과 같이 선언됩니다. numpy.allclose(a, b, rtol=1e-05, atol=1e-08, ...) 을 사용하여 비대칭 비교를 구현합니다.

absolute(a - b) <= (atol + rtol * absolute(b))

비대칭 비교 결과는 allclose(a, b)   allclose(b, a) 와 다를 수 있습니다  드문 경우지만 allclose  비 정류 는 비교 연산자의 놀라운 속성입니다.

비대칭 비교를하는 이유는 무엇입니까?


  • 답변 # 1

    내 의견 외에도 math.isclose   abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol) 를 사용합니다  이것은 정식 적이지만 추가 작업을 희생해야합니다 (최대 배열을 찾으려면 쌓아야하는 numpy 배열의 경우 비용이 많이들 수 있음). 이 속성이 실제로 필요한 경우 직접 구현하는 것이 어렵지 않습니다.

    def isclose_comm(a, b, rtol=1e-5, atol=1e-8):
       ab = np.stack((a, b))
       return np.abs(a - b) <= (atol + rtol * ab.max(axis=0))
    x = np.random.random(5)
    x
    Out[94]: array([0.36007049, 0.86934972, 0.05827216, 0.60794612, 0.24539454])
    y = x + np.random.random(5)/1e6
    y
    Out[96]: array([0.36007072, 0.86934976, 0.05827312, 0.6079464 , 0.24539492])
    np.isclose(x, y)
    Out[97]: array([ True,  True,  False,  True,  True])
    isclose_comm(x, y)
    Out[98]: array([ True,  True,  True,  True,  True])
    z = np.zeros(5)
    isclose_comm(x, z)
    Out[100]: array([False, False, False, False, False])
    
    

    allclose  상당 :

    def allclose_comm(a, b, rtol=1e-5, atol=1e-8):
        return isclose_comm(a, b, rtol, atol).all()
    
    

  • 이전 python - EXIF/JFIF 서명으로 JPEG 파일을 어떻게 탐지합니까?
  • 다음 java - 최대 절전 모드 - save () 메소드를 사용한 차이 업데이트 vs update () 메소드를 사용한 업데이트