Numpy: np.floor_divide рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЕрдкреНрд░реИрд▓ 2019  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛:

import numpy as np
a = np.arange(10) + 1j* np.arange(10)
a
# array([0.+0.j, 1.+1.j, 2.+2.j, 3.+3.j, 4.+4.j, 5.+5.j, 6.+6.j, 7.+7.j,
#           8.+8.j, 9.+9.j])
a / 2
# array([0. +0.j , 0.5+0.5j, 1. +1.j , 1.5+1.5j, 2. +2.j , 2.5+2.5j,
#          3. +3.j , 3.5+3.5j, 4. +4.j , 4.5+4.5j])
a // 2
# array([0.+0.j, 0.+0.j, 1.+0.j, 1.+0.j, 2.+0.j, 2.+0.j, 3.+0.j, 3.+0.j,
#          4.+0.j, 4.+0.j])

рдХреНрдпрд╛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рд╣реИ? рдореИрдВ рдХрд╛рд▓реНрдкрдирд┐рдХ рдФрд░ рдЬрдЯрд┐рд▓ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдордВрдЬрд┐рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ред

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:

рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдпрд╛ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИ, рдпрд╣ рднреА рдирд╣реАрдВ рдХрд┐ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рдЦреЛ рд░рд╣рд╛ рд╣реИред

Numpy / рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА:

1.16.1
3.6.7 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 22 рдЕрдХреНрдЯреВрдмрд░ 2018, 11:32:17)
[рдЬреАрд╕реАрд╕реА 8.2.0]

00 - Bug 15 - Discussion numpy.ufunc

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

рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЬрд┐рд▓ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рддрд▓
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧ рдФрд░ рдЬрдЯрд┐рд▓ рднрд╛рдЧ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред 2 рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред ( рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ )

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
`>>> (1. + 1.j) // 2

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "", рдкрдВрдХреНрддрд┐ 1, рдореЗрдВ
TypeError: рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдлрд░реНрд╢ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ред `

Similary рдпрд╣ TypeError рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рд╕реНрд░реЛрдд рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рдХрд░рдирд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░рд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

Numpy рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдлрд░реНрд╢ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдмрд╕ рдХрд╛рд▓реНрдкрдирд┐рдХ рднрд╛рдЧ рдХреЛ рдЧрд┐рд░рд╛ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Numpy рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

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

рд╕рд╛рдорд╛рдиреНрдп рдЕрдЬрдЧрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдореЗрдВ рд╢рд╛рдпрдж рд╕реВрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ?

рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ TypeError рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рднреА рдПрдХ (2 + 2j) // 2 = (1 + 1j) рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХреНрдпрд╛ рд╣реИ, рд╢реЗрд╖ рдХреЛ рдХреЗрд╡рд▓ рдЬрдЯрд┐рд▓ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ)ред рдФрд░ рдЕрдЧрд░ рд╣рдо рдЧрд▓рддреА рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдереЛрдбрд╝рд╛-рдмрд╣реБрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреИрд╕реЗ ufuncs рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдХреБрдЫ рдЪрд░реНрдЪрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

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

@ kaivu1999 - floor_divide ufunc (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ divmod , remainder , рдФрд░ modf рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред core/src/umath/loops.c.src , (рд╕рдВрднрд╡рддрдГ рдмрд╕ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ 2480--2500)ред

@ mhvk рд╣рд╛рдБ, рдЖрдкрдХреЛ numpy/core/code_generators/generate_umath.py рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ numpy/core/src/umath/ufunc_type_resolution.c рдЫреВрддрд╛ рд╣реИ)ред

@рдмрд░реНрдЧ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдмрдЧ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдХрд┐ remainder рдФрд░ divmod рд╕рд╛рде рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрдард╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рд╣рдо рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рдкреНрд░рддреАрдд рд╣реЛрдЧреАред

рд╣рд╛рдБ, рдореИрдВ рдЗрд╕ рдкрд░ рд╣реВрдБред
рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
`>>> рдП // 2

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "", рдкрдВрдХреНрддрд┐ 1, рдореЗрдВ
TypeError: ufunc 'floor_divide' рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрдирдкреБрдЯ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдирд┐рдпрдо '' safe '' рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рд╕реА рднреА рд╕рдорд░реНрдерд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
`
рдХреНрдпрд╛ рдореИрдВ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░реВрдВрдЧрд╛?

@ kaivu1999 рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред рдХреГрдкрдпрд╛ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ Fixes #13236 рдбрд╛рд▓рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдФрд░ рдкреАрдЖрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рджреЛрдиреЛрдВ рднрд╛рдЧреЛрдВ рдкрд░ рдлрд░реНрд╢ рд╡рд┐рднрд╛рдЬрди рдХрд░рдирд╛ рдХреБрдЫ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЧрд╛рдКрд╕реА рдкреВрд░реНрдгрд╛рдВрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдЬрдЧрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

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

ghost picture ghost  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

perezpaya picture perezpaya  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thouis picture thouis  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

navytux picture navytux  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kevinzhai80 picture kevinzhai80  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ