Astropy: `рдХреНрд╡рд╛рдВрдЯрд┐рдЯреА_рдСрд▓рдХреНрд▓реЛрдЬрд╝` рдЕрдВрддрд░ рд╕реЗ рд╕реБрдиреНрди `рдСрд▓рдХреНрд▓реЛрдЬрд╝`

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЕрдХреНрддреВре░ 2020  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: astropy/astropy

рд╡рд┐рд╡рд░рдг

рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, astropy.units.allclose рдорд┐рд▓рд╛рди numpy.allclose

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рдЗрдХрд╛рдИ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, I/O рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордп рдЬрд╣рд╛рдВ рдкрд╣рд▓реА рд╕рд░рдгреА рдореЗрдВ 0 рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реА рд╕рд░рдгреА рд╕рднреА рд╢реВрдиреНрдп рд╣реЛрддреА рд╣реИ, numpy allclose рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди units.allclose "rtol" рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЧрд▓рдд рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

>>> import numpy as np
>>> np.allclose([1e-17, 0, 0], [0, 0, 0], rtol=1e-5)
True
>>> import astropy.units as u
>>> u.allclose([1e-17, 0, 0] * u.m, [0, 0, 0] * u.m, rtol=1e-5)
False

рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╡рд░рдг

macOS-10.15.7-x86_64-i386-64bit
рдкрд╛рдпрдерди 3.8.2 | рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рджреНрд╡рд╛рд░рд╛ рдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ | (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 24 рдЕрдкреНрд░реИрд▓ 2020, 07:56:27)
[рдХреНрд▓реИрдВрдЧ 9.0.1]
рд╕реБрдиреНрди 1.18.4
рдПрд╕реНрдЯреНрд░реЛрдкреА 4.2.dev877+g4eef52a1c
рд╕реНрдХрд╛рдЗрдк 1.4.1
рдорд╛рдЯрдкреНрд▓реЛрдЯрд▓рд┐рдм 3.2.1

Close? question units

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди allclose рдпреВрдирд┐рдЯ-рдХрдо рдФрд░ рдпреВрдирд┐рдЯ-рдлреБрд▓ рдЗрдирдкреБрдЯ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмреАрдЪ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдЕрдВрддрд░ рд╣реИред numpy.allclose рдиреЛрдЯреЛрдВ рдХреЗ рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ:

рдпрджрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореАрдХрд░рдг рддрддреНрд╡-рд╡рд╛рд░ рд╕рддреНрдп рд╣реИ, рддреЛ рд╕рднреА рдмрдВрдж рд░рд┐рдЯрд░реНрди рд╕рддреНрдп рд╣реИред
рдирд┐рд░рдкреЗрдХреНрд╖ (рдП - рдмреА) <= (рдПрдЯреЛрд▓ + рдЖрд░рдЯреАрдУрдПрд▓ * рдирд┐рд░рдкреЗрдХреНрд╖ (рдмреА))

рдореЗрдВ numpy.allclose , atol=1e-8 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реНрдг рддреБрд▓рдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ astropy.units.allclose , рд╡рд╣рд╛рдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ atol рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЗрдХрд╛рдЗрдпреЛрдВред рдпрджрд┐ рдЖрдк рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреЙрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ atol=None рдореЗрдВ astropy.units.allclose ред рдпрджрд┐ рдЖрдк рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ atol рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

>>> u.allclose([1e-17, 0, 0] * u.m, [0, 0, 0] * u.m, rtol=1e-5, atol=1e-8*u.m)
True

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди allclose рдпреВрдирд┐рдЯ-рдХрдо рдФрд░ рдпреВрдирд┐рдЯ-рдлреБрд▓ рдЗрдирдкреБрдЯ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмреАрдЪ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдЕрдВрддрд░ рд╣реИред numpy.allclose рдиреЛрдЯреЛрдВ рдХреЗ рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ:

рдпрджрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдореАрдХрд░рдг рддрддреНрд╡-рд╡рд╛рд░ рд╕рддреНрдп рд╣реИ, рддреЛ рд╕рднреА рдмрдВрдж рд░рд┐рдЯрд░реНрди рд╕рддреНрдп рд╣реИред
рдирд┐рд░рдкреЗрдХреНрд╖ (рдП - рдмреА) <= (рдПрдЯреЛрд▓ + рдЖрд░рдЯреАрдУрдПрд▓ * рдирд┐рд░рдкреЗрдХреНрд╖ (рдмреА))

рдореЗрдВ numpy.allclose , atol=1e-8 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реНрдг рддреБрд▓рдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ astropy.units.allclose , рд╡рд╣рд╛рдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ atol рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЗрдХрд╛рдЗрдпреЛрдВред рдпрджрд┐ рдЖрдк рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреЙрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ atol=None рдореЗрдВ astropy.units.allclose ред рдпрджрд┐ рдЖрдк рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ atol рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:

>>> u.allclose([1e-17, 0, 0] * u.m, [0, 0, 0] * u.m, rtol=1e-5, atol=1e-8*u.m)
True

@nstarman рдЕрдЧрд░ astropy.units.allclose рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдиреЛрдЯ рд╣реЛрддрд╛ рддреЛ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдорджрдж

рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЖрдкрдиреЗ рдКрдкрд░ рдЬреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд▓рд┐рдЦрд╛ рд╣реИ рд╡рд╣ рд╕рд╣реА рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

JWDobken picture JWDobken  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DanRyanIrish picture DanRyanIrish  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

emilydeibert picture emilydeibert  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

larrybradley picture larrybradley  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Gabriel-p picture Gabriel-p  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ