Numpy: рдЬрдЯрд┐рд▓ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде np.clip рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдлрд╝рд░ре░ 2020  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдпрд╣ https://github.com/pytorch/pytorch/issues/33568 рдкрд░ рдЖрдпрд╛

>>> np.clip([3 + 4.j], -1, 2)                                                                                       
array([2.+0.j])
>>> np.clip([3 + 4.j], -1+1.j, 2+12.j)  # imaginary component goes up                                                                   
array([2.+12.j])
>>> np.clip([1 + 4.j], -1+1.j, 2+12.j)  # imaginary component doesn't go up                                                                             
array([1.+4.j])

рдЬрдЯрд┐рд▓ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рдкрд░реАрдХреНрд╖рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ segfault рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЙрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдХреНрд▓рд┐рдк рдХрд░реЗрдВ
  • рдкреВрд░реНрдг рдорд╛рди рдХреЛ рдХреНрд▓рд┐рдк рдХрд░реЗрдВ, рдЪрд░рдг рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ
    рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдпрд╣ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдпрд╣рд╛рдВ рджрд░реНрдЬ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

00 - Bug numpy.core

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

@ рдореЗрд░реА , рдореИрдВ рд╕рд╣рдордд рдерд╛, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдЧрд╛ред рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдмреБрд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ min.real <= max.real рдФрд░ min.imag <= max.imag рдХреЗрд╡рд▓ min <= max рд╡рд┐рдкрд░реАрдд рд╣реИ, рддреЛ рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ NumPy рдореЗрдВ)ред

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

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ x = sorted(x) x = [min, clip(arr, min, max), max] , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдпрд╣рд╛рдВ рдЫрдВрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╢рд╛рдпрдж рдиреНрдпреВрдирддрдо / рдЕрдзрд┐рдХрддрдо рдФрд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП ...
рдФрд░ рдЕрдЧрд░ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдПрдХ absmin , absmax , рдФрд░ abssort рдХрд╛ рдЕрд░реНрде рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рдЧреИрд░-рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд░рд┐рдХреНрд╕рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдПрдХ рдиреЛрдЯ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рдЦрд░реАрджрддрд╛ рд╣реВрдВред рдЕрдиреНрдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рд╡рд╣рд╛рдБ рд╕рдм рдкрд░ рдЗрд╕ рдмрд╛рдд рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ USECASE рд╣реИ? рдПрдХ рдЬреЛ рдЕрд▓рдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдХреНрд▓рд┐рдк рдХрд░реЗрдВ

рд╡рд╣ рдореЗрд░реА рдкрд╣рд▓реА рдкрд╕рдВрдж рд╣реЛрдЧреАред

рдкреВрд░реНрдг рдорд╛рди рдХреЛ рдХреНрд▓рд┐рдк рдХрд░реЗрдВ, рдЪрд░рдг рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ

рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рд╕рд░рд▓ рдХреНрд▓рд┐рдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рджреВрд╕рд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ _usecase_ рд╣реИ? рдПрдХ рдЬреЛ рдЕрд▓рдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ?

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд░рдгреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреЛ рдХреНрд▓рд┐рдкрд┐рдВрдЧ рдЖрдо рддреМрд░ рдкрд░ рддреАрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИ: [min_value, рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд, max_value]ред рдпрджрд┐ рд╣рдо рдПрдХ рдЬрдЯрд┐рд▓ рд╕рд░рдгреА рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд┐рдк рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдорд╛рди рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рднрд▓реЗ рд╣реА рд╡реЗ рдиреНрдпреВрдирддрдо рд╕реЗ рдХрдо рдпрд╛ рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЕрдзрд┐рдХ рдХреА рддреБрд▓рдирд╛ рди рдХрд░реЗрдВ!

рдореИрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рди рд╣реЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХреНрд▓рд┐рдк рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрджрд┐ c <min_value рдпрд╣ min_value рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдпрджрд┐ c> max_value рдЗрд╕рдХреЗ рд╕реЗрдЯ рдХреЛ max_value рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

@ рдореЗрд░реА , рдореИрдВ рд╕рд╣рдордд рдерд╛, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЬреЛ рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░реЗрдЧрд╛ред рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдмреБрд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ min.real <= max.real рдФрд░ min.imag <= max.imag рдХреЗрд╡рд▓ min <= max рд╡рд┐рдкрд░реАрдд рд╣реИ, рддреЛ рдЪреАрдЬреЗрдВ рдареАрдХ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ NumPy рдореЗрдВ)ред

рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдБ, рднреА @seberg ;)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП PyTorch рдореЗрдВ рдХреНрд▓реАрдкрд┐рдВрдЧ (рд╣рдо рдЗрд╕реЗ рдХреНрд▓реИрдореНрдкрд┐рдВрдЧ рдХрд╣рддреЗ рд╣реИрдВ) рдХреЛ рдЬрдЯрд┐рд▓ рдЗрдирдкреБрдЯ рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реИрд╕реЗ рднреА NumPy рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рдерд╛ред

рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдореНрдлреЛрдЧреНрд░рд╛рдлрд┐рдХ рдХреА рддреБрд▓рдирд╛ рдЦрд╕реНрддрд╛ рдореЗрдВ рджреА рдЧрдИ рд╣реИ, рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдо рд▓реЗрдХреНрд╕рд┐рдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рддреБрд▓рдирд╛ рдХреЛ рд╣рдЯрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд┐рдк, рдЕрдзрд┐рдХрддрдо рдФрд░ рдиреНрдпреВрдирддрдо рдХрд╛ рднреА рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдорд╛рди рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдкрд╣реБрдВрдЪ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреАрдЖрд░ рд╕реЗ рдмрд╣реБрдд рдпрдХреАрди рдирд╣реАрдВ рдерд╛ред

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