__array_function__
рдкреНрд░реЗрд╖рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП .__skip_array_function__
рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реЗрдВред (Https://github.com/numpy/numpy/pull/13389)numpy/core/overrides.py
C рдХреЗ рднрд╛рдЧреЛрдВ (https://github.com/numpy/numpy/issues/12028) рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:get_overloaded_types_and_args
array_function_implementation_or_override
ndarray.__array_function__
?array_function_dispatch
?numpy.core
np.core.defchararray
(# 12154)np.einsum
рдФрд░ np.block
(https://github.com/numpy/numpy/pull/12163)numpy.lib
numpy.fft
/ numpy.linalg
(https://github.com/numpy/numpy/pull/12117)arange?
] (https://github.com/numpy/numpy/issues/12379)ndarray.__repr__
рдХреЛ __array_function__
(https://github.com/numpy/numpy/pull/12212) рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПstacklevel
рдХреЛ 1 рд╕реЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЯреНрд░реЗрд╕рдмреИрдХ рд╕рд╣реА рдЬрдЧрд╣ (gh-13329) рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВрдХреБрдЫ рд╣рд╛рдИ-рдкреНрд░реЛрдлрд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ "рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ NumPy рдХрд╛рд░реНрдпреЛрдВ рдХреЛ @array_function_dispatch" рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рд╕реЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо https://github.com/numpy/numpy/pull/12099 рдХреЛ рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдкреАрдЖрд░ рддреИрдпрд╛рд░ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ numpy.core
рд▓рд┐рдП рдкреНрд░реЗрд╖рдг рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЪреАрдЬреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ - рдпрд╣ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рднреА рдХрдо рд╕рдордп рд▓реЗрддрд╛ рд╣реИред
cc @ eric-wieser @mrocklin @mhvk @hameerabbasi
рдореЗрд░реА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП https://github.com/shoyer/numpy/tree/array-function-easy-impl рджреЗрдЦреЗрдВ рдЬреЛ рдкрд╛рдпрдерди рд░реИрдкрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╕рднреА "рдЖрд╕рд╛рди" рдУрд╡рд░рд░рд╛рдЗрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдмрдЪреЗ рд╣реБрдП рднрд╛рдЧ np.block
, np.einsum
рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ C (рдЬреИрд╕реЗ, np.concatenate
) рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рд╣рдо # 12099 рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдкреАрдЖрд░ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджреЗрдВрдЧреЗред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдЬрдм рд╣рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореИрдВ рдХреБрдЫ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ (рдЬреИрд╕реЗ, рдПрдХ рдмрддрдЦ рд╕рд░рдгреА рдЬреЛ рд╕рднреА рд▓рд╛рдЧреВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЙрддреНрдкрд╛рджрдХ рд╣реЛрдЧрд╛ред # 12099 рдореЗрдВ рдЪреЗрдХреЛрдВ рдХреЛ рдбрд┐рд╕реНрдкреИрдЪрд░реНрд╕ рдкрд░ рд╕рдмрд╕реЗ рдЖрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@shoyer - рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ; рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕реБрдиреНрди рдХреЗ рднреАрддрд░, рдпрд╣ MaskedArray
рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЬрд▓реНрджреА рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрджрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@ mhvk рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рджреЗрддрд╛ / рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬреЛ рдорд╛рд╕реНрдХрд╕реЗрд░реНрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
Https://github.com/numpy/numpy/pull/12115 , https://github.com/numpy/numpy/pull/12116 , # 12119 рдФрд░ https://github.com/numpy/numpy/null/ рджреЗрдЦреЗрдВ 12117 рдкрд╛рдпрдерди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдкрд░ __array_function__
рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреАрдЖрд░рдПрд╕ рдХреЗ рд▓рд┐рдПред
@ рд╢рд╛рдпрд░ - рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рджреЛ рдЪрд┐рдВрддрд╛рдПрдБ рд╣реИрдВ:
reshape
, рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдиреЗ рдкрд╣рд▓реЗ рд╣реА reshape
рдкрджреНрдзрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ, рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред рд╣рдо рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдкрджрд╛рд╡рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ __array_function__
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИредnp.median
, np.asanyarray
рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдФрд░ ufuncs рдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрд╡рд░реНрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдм рд╕реАрдзреЗ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдпреЗ рджреЛ рдЪреАрдЬреЗрдВ рд╕рдВрднрд╡рддрдГ рд▓рд╛рдн рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╢реБрджреНрдз ndarray
рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╛рдж рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ ndarray.__array_function__
рдХреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрджрд┐ред ndarray
, рддрд╛рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХреЗрдВ)ред рдлрд┐рд░ рднреА, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдиреЛрдЯ рдХрд░реВрдБрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдореБрдЭреЗ Quantity
рд▓рд┐рдП рдпрд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рднрдп рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рджреЛрдиреЛрдВ - рдХрд╛рдо рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рд┐рдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ ndarray .__ array_function__ рдХреЛ ndarray рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реВрдЪрд┐рдпрд╛рдБ рдЖрджрд┐ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХреЗрдВ)ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ reshape
рдФрд░ mean
рдЬреИрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЗ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреБрд░рд╛рдирд╛ рддрд░реАрдХрд╛ рдЕрднреА рднреА NumPy рдХреЗ API рдХреЗ рдЕрдзреВрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдПрдХ рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП __array_function__
рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд┐рдЫрд▓реЗ рддрдВрддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ NotImplementedButCoercible
рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВред
@hameerabbasi - рд╣рд╛рдБ, рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рд╣рдореЗрдВ рдпрд╣рд╛рдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбрдХреНрдЯ-рдЯреЗрдк рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрдВрдЧреЗ ... (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА "рд╕рдорд╕реНрдпрд╛рдПрдВ" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдн рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ...) ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ 1.16 рдореЗрдВ рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реБрдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо "рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП" рдореЗрд░реЗ __array_function__
рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдкреБрди :: рдбрд┐рд╕реНрдкреИрдЪрд░ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ: рд╢реИрд▓реА рдкрд░ рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╕реНрдореГрддрд┐ / рдЖрдпрд╛рдд рд╕рдордп рдХреЗ рд╡рд┐рдЪрд╛рд░, рдФрд░ рд╡рд╛рдЪрд╛рд▓рддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдХрд╛рдлреА рдмрд╕, рдЙрди рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЛ рдорд░реНрдЬ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рдорд╛рди рд░рд╣рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, рд╣рдо рдХрдо рд╕реЗ рдХрдо рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреИрд╢ рд╣рд┐рдЯ рднреА рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рднреА рд▓рдВрдмреЛрджрд░ рд╢реИрд▓реА рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдбрд┐рд╕реНрдкреИрдЪрд░ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рд╢реИрд▓реА рдЕрдм рдХреБрдЫ рдкреАрдЖрд░ рдореЗрдВ рдЖ рдЧрдИ рд╣реИред NumPy рдореЗрдВ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рд╡рд┐рдХрд▓реНрдк 1 : рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдкреИрдЪрд░ рд▓рд┐рдЦреЗрдВ, рдЬреИрд╕реЗ,
def _sin_dispatcher(a):
return (a,)
@array_function_dispatch(_sin_dispatcher)
def sin(a):
...
def _cos_dispatcher(a):
return (a,)
@array_function_dispatch(_cos_dispatcher)
def cos(a):
...
рд▓рд╛рдн:
sin(x=1)
-> TypeError: _sin_dispatcher() got an unexpected keyword argument 'x'
редрдиреБрдХрд╕рд╛рди:
рд╡рд┐рдХрд▓реНрдк 2 : рдкреБрди: рдбрд┐рд╕реНрдкреИрдЪрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рднреАрддрд░, рдЬреИрд╕реЗ,
def _unary_dispatcher(a):
return (a,)
@array_function_dispatch(_unary_dispatcher)
def sin(a):
...
@array_function_dispatch(_unary_dispatcher)
def cos(a):
...
рд▓рд╛рдн:
рдиреБрдХрд╕рд╛рди:
sin(x=1)
-> TypeError: _unary_dispatcher() got an unexpected keyword argument 'x'
рд╡рд┐рдХрд▓реНрдк 3 : рдЬрдм рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдлрд┐рдЯ рд╣реЛрдЧреА, рдЬреИрд╕реЗ lambda
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕реЗ;
# inline style (shorter)
@array_function_dispatch(lambda a: (a,))
def sin(a):
...
@array_function_dispatch(lambda a, n=None, axis=None, norm=None: (a,))
def fft(a, n=None, axis=-1, norm=None):
...
# multiline style (more readable?)
@array_function_dispatch(
lambda a: (a,)
)
def sin(a):
...
@array_function_dispatch(
lambda a, n=None, axis=None, norm=None: (a,)
)
def fft(a, n=None, axis=-1, norm=None):
...
рд▓рд╛рдн:
рдиреБрдХрд╕рд╛рди:
TypeError: <lambda>() got an unexpected keyword argument 'x'
)@shoyer : "рд▓рд╛рдЗрдиреЛрдВ рдХреА рдХреЛрдб" рдкрд╣рд▓реВ рдХреЛ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ-рдкрдВрдХреНрддрд┐ PEP8 рд░рд┐рдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдЧрдард┐рдд рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреБрдЫ рдЖрдпрд╛рдд-рд╕рдордп рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рдЖрдПрдЧрд╛ред рд╢рд╛рдпрдж рдЬрд╛рдВрдЪ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @nschloe рдХреЗ рдЯреВрдирд╛ рдХреЛ
рд╣рд╛рдВ, рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдирд╛рдордЯреВрдкрд▓ рдХреА рддрд░рд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдпрд╣ exec()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред
рдЬрдм рддрдХ рддреНрд░реБрдЯрд┐ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЫрдбрд╝реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рд╣реИред рдореИрдВ рд╕реНрдореГрддрд┐ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдПрдХ рд╕рд╛рде (2) рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддрдм рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдмрд╣реБрдд рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЛ _dispatch_on_x
рддрд░рд╣ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдкрд╡рд╛рдж рдкрд╛рда рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЗ рд╕рд╛рде <lambda>
рдЬрдЧрд╣ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред (рдпрд╛ рд╡рд╣ рдЪреЗрди рдЗрди рджрд┐рдиреЛрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ?)
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдареАрдХ рд╣реИ, рдЕрдм рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ lambda
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛рдо рди рдорд┐рд▓реЗред
https://github.com/numpy/numpy/pull/12175 рдорд▓реНрдЯреАрдПрд░реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдПрдХ рдбреНрд░рд╛рдлреНрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ) рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдо рдкрд╛рдпрдерди рд░реИрдкрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддреЗ рд╣реИрдВред
@ рдореИрдЯреНрдЯрд┐рдк рд╣рдо matmul
рдХреЛ рдПрдХ ufunc рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рдХрд╣рд╛рдБ рд╣реИрдВ? рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдЗрди рд╕рднреА __array_function__
рдУрд╡рд░рд░рд╛рдЗрдб рдХреЛ рдкреВрд░рд╛ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ NumPy рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рднрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдВрддрд┐рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рднреА NumPy 1.16 рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдП!
PR # 11175, рдЬреЛ NEP 20 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рдЧрддрд┐ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ PR # 11133 рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд░реЛрдзрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ matmul рд▓реВрдк рдХреЛрдб рд╣реИред рдЙрд╕ рдПрдХ рдХреЛ рдЕрднреА рднреА рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдирдпрд╛ рдХреЛрдб рдкреБрд░рд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдкреАрдЖрд░рдПрд╕ рд╣реИрдВ рдЬреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рдкреВрд░реНрдг рд╕реЗрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд┐рдо рд╕рдореАрдХреНрд╖рд╛ / рд╕рд╛рдЗрдирдСрдлрд╝ / рдорд░реНрдЬ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА рддрд╛рдХрд┐ рд╣рдо рдмрдпрд╛рдирд╛ рдореЗрдВ __array_function__
рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХреЗрдВ! https://github.com/numpy/numpy/pull/12154 , https://github.com/numpy/numpy/pull/12163 , https://github.com/numpy/numpy/pull/12119 , https: //github.com/numpy/numpy/pull/12175
рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕ рдХреЛ np.core
рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХреБрдЫ рдкрд╛рдВрдбрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП (https://github.com/pandas-dev/pandas/issues/23172)ред рд╣рдо рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
Https://github.com/numpy/numpy/issues/12225 рдкрд░ рдореЗрд░реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдбрд╕реНрдХ / рдкрд╛рдВрдбрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпреЛрдВ рдмрди рд░рд╣рд╛ рд╣реИред
рдЖрдпрд╛рдд рд╕рдордп рдХреЗ рдХреБрдЫ рдорд╛рдирджрдВрдб (рдореЗрд░реА рдореИрдХрдмреБрдХ рдкреНрд░реЛ рдкрд░ рдПрдХ рдареЛрд╕ рд░рд╛рдЬреНрдп рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде):
decorator.decorate
(# 12226) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: 183.694 рдПрдордПрд╕рдореЗрд░реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
import numpy as np
import subprocess
times = []
for _ in range(100):
result = subprocess.run("python -X importtime -c 'import numpy'",
shell=True, capture_output=True)
last_line = result.stderr.rstrip().split(b'\n')[-1]
time = float(last_line.decode('ascii')[-15:-7].strip().rstrip())
times.append(time)
print(np.median(times) / 1e3)
рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ (рдкрд╣рд▓реЗ / рдмрд╛рдж)? рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ IoT рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧреА рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХреИрд╕реЗ рдорд╛рдкреЗрдВ?
рд╕рдд, 20 рдЕрдХреНрдЯреВрдмрд░, 2018 рдХреЛ рд╕реБрдмрд╣ 6:56 рдмрдЬреЗ рд╣рдореАрд░ рдЕрдмреНрдмрд╛рд╕реА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:
рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ (рдкрд╣рд▓реЗ / рдмрд╛рдж)? рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ IoT рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/numpy/numpy/issues/12028#issuecomment-431584123 , рдпрд╛ рдореНрдпреВрдЯ
рд╕реВрддреНрд░
https://github.com/notifications/unsubscribe-auth/ABKS1k_IkrJ2YmYReaDrnkNvcH2X0-ZCks5umyuogaJpZM4W3kSC
ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрд▓реАрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдФрд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП import numpy as np
рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред https://superuser.com/questions/581108/how-can-i-track-and-log-cpu-and-memory-usage-on-a-mac
рдХреЛрдИ рдЕрдиреНрдп рдХреЛрд░ рджреЗрд╡рддрд╛ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ!) Https://github.com/numpy/numpy/pull/12163 рдкрд░ рдпрд╣ рдЕрдВрддрд┐рдо рдкреАрдЖрд░ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд╕реБрдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП array_function_dispatch
рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ __array_function__
рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╕рдордп рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЧрдпрд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░:
before after ratio
[45718fd7] [4e5aa2cd]
<master> <disable-array-function>
+ 72.5┬▒2ms 132┬▒20ms 1.82 bench_io.LoadtxtCSVdtypes.time_loadtxt_dtypes_csv('complex128', 10000)
- 44.9┬▒2╬╝s 40.8┬▒0.6╬╝s 0.91 bench_ma.Concatenate.time_it('ndarray', 2)
- 15.3┬▒0.3╬╝s 13.3┬▒0.7╬╝s 0.87 bench_core.CountNonzero.time_count_nonzero_multi_axis(2, 100, <type 'object'>)
- 38.4┬▒1╬╝s 32.7┬▒2╬╝s 0.85 bench_linalg.Linalg.time_op('norm', 'longfloat')
- 68.7┬▒3╬╝s 56.5┬▒3╬╝s 0.82 bench_linalg.Linalg.time_op('norm', 'complex256')
- 80.6┬▒4╬╝s 65.9┬▒1╬╝s 0.82 bench_function_base.Median.time_even
- 82.4┬▒2╬╝s 66.8┬▒3╬╝s 0.81 bench_shape_base.Block.time_no_lists(100)
- 73.5┬▒3╬╝s 59.3┬▒3╬╝s 0.81 bench_function_base.Median.time_even_inplace
- 15.2┬▒0.3╬╝s 12.2┬▒0.6╬╝s 0.80 bench_core.CountNonzero.time_count_nonzero_multi_axis(3, 100, <type 'str'>)
- 2.20┬▒0.1ms 1.76┬▒0.04ms 0.80 bench_shape_base.Block2D.time_block2d((1024, 1024), 'uint64', (4, 4))
- 388┬▒20╬╝s 310┬▒10╬╝s 0.80 bench_lib.Pad.time_pad((10, 10, 10), 3, 'linear_ramp')
- 659┬▒20╬╝s 524┬▒20╬╝s 0.80 bench_linalg.Linalg.time_op('det', 'float32')
- 22.9┬▒0.7╬╝s 18.2┬▒0.8╬╝s 0.79 bench_function_base.Where.time_1
- 980┬▒50╬╝s 775┬▒20╬╝s 0.79 bench_shape_base.Block2D.time_block2d((1024, 1024), 'uint32', (4, 4))
- 36.6┬▒1╬╝s 29.0┬▒1╬╝s 0.79 bench_ma.Concatenate.time_it('unmasked', 2)
- 16.4┬▒0.7╬╝s 12.9┬▒0.6╬╝s 0.79 bench_core.CountNonzero.time_count_nonzero_axis(3, 100, <type 'str'>)
- 16.4┬▒0.5╬╝s 12.9┬▒0.4╬╝s 0.79 bench_core.CountNonzero.time_count_nonzero_axis(2, 100, <type 'object'>)
- 141┬▒5╬╝s 110┬▒4╬╝s 0.78 bench_lib.Pad.time_pad((10, 100), (0, 5), 'linear_ramp')
- 18.0┬▒0.6╬╝s 14.1┬▒0.6╬╝s 0.78 bench_core.CountNonzero.time_count_nonzero_axis(3, 100, <type 'object'>)
- 11.9┬▒0.6╬╝s 9.28┬▒0.5╬╝s 0.78 bench_core.CountNonzero.time_count_nonzero_axis(1, 100, <type 'int'>)
- 54.6┬▒3╬╝s 42.4┬▒2╬╝s 0.78 bench_function_base.Median.time_odd_small
- 317┬▒10╬╝s 246┬▒7╬╝s 0.78 bench_lib.Pad.time_pad((10, 10, 10), 1, 'linear_ramp')
- 13.8┬▒0.5╬╝s 10.7┬▒0.7╬╝s 0.77 bench_reduce.MinMax.time_min(<type 'numpy.float64'>)
- 73.3┬▒6╬╝s 56.6┬▒4╬╝s 0.77 bench_lib.Pad.time_pad((1000,), (0, 5), 'mean')
- 14.7┬▒0.7╬╝s 11.4┬▒0.3╬╝s 0.77 bench_core.CountNonzero.time_count_nonzero_axis(2, 100, <type 'str'>)
- 21.5┬▒2╬╝s 16.5┬▒0.6╬╝s 0.77 bench_reduce.MinMax.time_min(<type 'numpy.int64'>)
- 117┬▒4╬╝s 89.2┬▒3╬╝s 0.76 bench_lib.Pad.time_pad((1000,), 3, 'linear_ramp')
- 43.7┬▒1╬╝s 33.4┬▒1╬╝s 0.76 bench_linalg.Linalg.time_op('norm', 'complex128')
- 12.6┬▒0.6╬╝s 9.55┬▒0.2╬╝s 0.76 bench_core.CountNonzero.time_count_nonzero_multi_axis(2, 100, <type 'int'>)
- 636┬▒20╬╝s 482┬▒20╬╝s 0.76 bench_ma.MA.time_masked_array_l100
- 86.6┬▒4╬╝s 65.6┬▒4╬╝s 0.76 bench_lib.Pad.time_pad((1000,), (0, 5), 'linear_ramp')
- 120┬▒4╬╝s 90.4┬▒2╬╝s 0.75 bench_lib.Pad.time_pad((1000,), 1, 'linear_ramp')
- 160┬▒5╬╝s 119┬▒8╬╝s 0.74 bench_ma.Concatenate.time_it('ndarray+masked', 100)
- 14.4┬▒0.6╬╝s 10.7┬▒0.3╬╝s 0.74 bench_core.CountNonzero.time_count_nonzero_multi_axis(1, 100, <type 'str'>)
- 15.7┬▒0.4╬╝s 11.7┬▒0.6╬╝s 0.74 bench_core.CountNonzero.time_count_nonzero_multi_axis(2, 100, <type 'str'>)
- 21.8┬▒2╬╝s 16.1┬▒0.7╬╝s 0.74 bench_reduce.MinMax.time_max(<type 'numpy.int64'>)
- 11.9┬▒0.6╬╝s 8.79┬▒0.3╬╝s 0.74 bench_core.CountNonzero.time_count_nonzero_axis(2, 100, <type 'bool'>)
- 53.8┬▒3╬╝s 39.4┬▒2╬╝s 0.73 bench_function_base.Median.time_even_small
- 106┬▒20╬╝s 76.7┬▒4╬╝s 0.73 bench_function_base.Select.time_select
- 168┬▒10╬╝s 122┬▒4╬╝s 0.72 bench_shape_base.Block2D.time_block2d((512, 512), 'uint32', (2, 2))
- 12.5┬▒0.5╬╝s 8.96┬▒0.4╬╝s 0.72 bench_core.CountNonzero.time_count_nonzero_multi_axis(1, 100, <type 'int'>)
- 162┬▒10╬╝s 115┬▒5╬╝s 0.71 bench_function_base.Percentile.time_percentile
- 12.9┬▒1╬╝s 9.12┬▒0.4╬╝s 0.71 bench_random.Random.time_rng('normal')
- 9.71┬▒0.4╬╝s 6.88┬▒0.3╬╝s 0.71 bench_core.CorrConv.time_convolve(1000, 10, 'full')
- 15.1┬▒0.8╬╝s 10.7┬▒0.4╬╝s 0.71 bench_reduce.MinMax.time_max(<type 'numpy.float64'>)
- 153┬▒9╬╝s 108┬▒7╬╝s 0.71 bench_shape_base.Block2D.time_block2d((1024, 1024), 'uint8', (2, 2))
- 109┬▒5╬╝s 76.9┬▒5╬╝s 0.71 bench_ma.Concatenate.time_it('ndarray+masked', 2)
- 34.3┬▒1╬╝s 24.2┬▒0.6╬╝s 0.71 bench_linalg.Linalg.time_op('norm', 'complex64')
- 9.80┬▒0.2╬╝s 6.84┬▒0.5╬╝s 0.70 bench_core.CorrConv.time_convolve(1000, 10, 'same')
- 27.4┬▒6╬╝s 19.1┬▒2╬╝s 0.70 bench_core.CountNonzero.time_count_nonzero_axis(1, 10000, <type 'bool'>)
- 9.35┬▒0.4╬╝s 6.50┬▒0.3╬╝s 0.70 bench_core.CorrConv.time_convolve(50, 100, 'full')
- 65.2┬▒4╬╝s 45.2┬▒1╬╝s 0.69 bench_shape_base.Block.time_block_simple_row_wise(100)
- 12.9┬▒1╬╝s 8.89┬▒0.3╬╝s 0.69 bench_core.CountNonzero.time_count_nonzero_axis(3, 100, <type 'bool'>)
- 19.6┬▒3╬╝s 13.5┬▒0.4╬╝s 0.69 bench_core.CountNonzero.time_count_nonzero_multi_axis(3, 100, <type 'object'>)
- 75.6┬▒2╬╝s 52.1┬▒3╬╝s 0.69 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'reflect')
- 12.4┬▒1╬╝s 8.51┬▒0.4╬╝s 0.69 bench_core.CountNonzero.time_count_nonzero_multi_axis(3, 100, <type 'bool'>)
- 172┬▒30╬╝s 117┬▒4╬╝s 0.68 bench_ma.Concatenate.time_it('unmasked+masked', 100)
- 23.1┬▒0.5╬╝s 15.8┬▒0.9╬╝s 0.68 bench_linalg.Linalg.time_op('norm', 'int16')
- 8.18┬▒0.9╬╝s 5.57┬▒0.1╬╝s 0.68 bench_core.CorrConv.time_correlate(1000, 10, 'full')
- 153┬▒5╬╝s 103┬▒3╬╝s 0.68 bench_function_base.Percentile.time_quartile
- 758┬▒100╬╝s 512┬▒20╬╝s 0.68 bench_linalg.Linalg.time_op('det', 'int16')
- 55.4┬▒6╬╝s 37.4┬▒1╬╝s 0.68 bench_ma.Concatenate.time_it('masked', 2)
- 234┬▒30╬╝s 157┬▒5╬╝s 0.67 bench_shape_base.Block.time_nested(100)
- 103┬▒4╬╝s 69.3┬▒3╬╝s 0.67 bench_linalg.Eindot.time_dot_d_dot_b_c
- 19.2┬▒0.4╬╝s 12.9┬▒0.6╬╝s 0.67 bench_core.Core.time_tril_l10x10
- 122┬▒7╬╝s 81.7┬▒4╬╝s 0.67 bench_lib.Pad.time_pad((10, 10, 10), 3, 'edge')
- 22.9┬▒1╬╝s 15.3┬▒0.5╬╝s 0.67 bench_linalg.Linalg.time_op('norm', 'int32')
- 16.6┬▒2╬╝s 11.0┬▒0.3╬╝s 0.66 bench_core.CountNonzero.time_count_nonzero_multi_axis(1, 100, <type 'object'>)
- 9.98┬▒0.3╬╝s 6.58┬▒0.1╬╝s 0.66 bench_core.CorrConv.time_convolve(1000, 10, 'valid')
- 118┬▒6╬╝s 77.9┬▒4╬╝s 0.66 bench_shape_base.Block2D.time_block2d((512, 512), 'uint16', (2, 2))
- 212┬▒50╬╝s 140┬▒8╬╝s 0.66 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'mean')
- 21.9┬▒0.7╬╝s 14.4┬▒0.5╬╝s 0.66 bench_linalg.Linalg.time_op('norm', 'int64')
- 131┬▒5╬╝s 85.9┬▒5╬╝s 0.65 bench_lib.Pad.time_pad((10, 10, 10), 3, 'constant')
- 56.8┬▒2╬╝s 37.0┬▒3╬╝s 0.65 bench_lib.Pad.time_pad((1000,), (0, 5), 'constant')
- 58.9┬▒3╬╝s 38.1┬▒1╬╝s 0.65 bench_lib.Pad.time_pad((10, 100), (0, 5), 'reflect')
- 72.1┬▒2╬╝s 46.5┬▒3╬╝s 0.64 bench_lib.Pad.time_pad((10, 100), (0, 5), 'constant')
- 8.66┬▒0.3╬╝s 5.58┬▒0.2╬╝s 0.64 bench_core.CorrConv.time_correlate(50, 100, 'full')
- 300┬▒30╬╝s 193┬▒10╬╝s 0.64 bench_shape_base.Block2D.time_block2d((1024, 1024), 'uint8', (4, 4))
- 15.9┬▒5╬╝s 10.2┬▒0.3╬╝s 0.64 bench_core.CountNonzero.time_count_nonzero_axis(3, 100, <type 'int'>)
- 13.7┬▒0.5╬╝s 8.80┬▒0.1╬╝s 0.64 bench_random.Random.time_rng('uniform')
- 8.60┬▒0.5╬╝s 5.50┬▒0.2╬╝s 0.64 bench_core.CorrConv.time_correlate(1000, 10, 'same')
- 44.7┬▒2╬╝s 28.5┬▒0.7╬╝s 0.64 bench_lib.Pad.time_pad((1000,), 1, 'reflect')
- 72.7┬▒3╬╝s 46.2┬▒2╬╝s 0.64 bench_lib.Pad.time_pad((10, 10, 10), 3, 'wrap')
- 567┬▒50╬╝s 360┬▒40╬╝s 0.63 bench_shape_base.Block2D.time_block2d((512, 512), 'uint64', (2, 2))
- 58.0┬▒3╬╝s 36.7┬▒2╬╝s 0.63 bench_lib.Pad.time_pad((10, 100), 3, 'reflect')
- 219┬▒30╬╝s 138┬▒7╬╝s 0.63 bench_lib.Pad.time_pad((10, 100), 1, 'mean')
- 261┬▒60╬╝s 164┬▒10╬╝s 0.63 bench_lib.Pad.time_pad((10, 100), 1, 'linear_ramp')
- 825┬▒100╬╝s 519┬▒30╬╝s 0.63 bench_shape_base.Block2D.time_block2d((512, 512), 'uint64', (4, 4))
- 121┬▒5╬╝s 75.7┬▒2╬╝s 0.63 bench_lib.Pad.time_pad((10, 10, 10), 1, 'constant')
- 8.16┬▒0.2╬╝s 5.08┬▒0.4╬╝s 0.62 bench_core.CorrConv.time_convolve(50, 100, 'same')
- 66.6┬▒3╬╝s 41.3┬▒2╬╝s 0.62 bench_lib.Pad.time_pad((1000,), 3, 'constant')
- 53.1┬▒3╬╝s 32.9┬▒0.8╬╝s 0.62 bench_lib.Pad.time_pad((10, 100), 3, 'wrap')
- 285┬▒60╬╝s 177┬▒10╬╝s 0.62 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'linear_ramp')
- 8.30┬▒0.9╬╝s 5.14┬▒0.1╬╝s 0.62 bench_core.CorrConv.time_correlate(1000, 10, 'valid')
- 115┬▒3╬╝s 71.2┬▒3╬╝s 0.62 bench_shape_base.Block2D.time_block2d((256, 256), 'uint64', (2, 2))
- 19.1┬▒0.5╬╝s 11.8┬▒0.6╬╝s 0.62 bench_linalg.Linalg.time_op('norm', 'float64')
- 95.3┬▒5╬╝s 58.6┬▒2╬╝s 0.62 bench_lib.Pad.time_pad((10, 100), 1, 'constant')
- 44.6┬▒1╬╝s 27.2┬▒0.9╬╝s 0.61 bench_lib.Pad.time_pad((1000,), (0, 5), 'edge')
- 447┬▒20╬╝s 270┬▒10╬╝s 0.61 bench_shape_base.Block2D.time_block2d((1024, 1024), 'uint16', (4, 4))
- 53.9┬▒2╬╝s 32.6┬▒2╬╝s 0.60 bench_lib.Pad.time_pad((10, 100), 1, 'wrap')
- 11.6┬▒1╬╝s 6.97┬▒0.4╬╝s 0.60 bench_reduce.MinMax.time_max(<type 'numpy.float32'>)
- 95.9┬▒5╬╝s 57.7┬▒2╬╝s 0.60 bench_lib.Pad.time_pad((10, 100), 3, 'constant')
- 47.2┬▒2╬╝s 28.2┬▒2╬╝s 0.60 bench_lib.Pad.time_pad((1000,), (0, 5), 'reflect')
- 5.51┬▒0.2╬╝s 3.27┬▒0.07╬╝s 0.59 bench_core.CountNonzero.time_count_nonzero(3, 100, <type 'object'>)
- 74.3┬▒3╬╝s 44.0┬▒2╬╝s 0.59 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'wrap')
- 76.2┬▒3╬╝s 45.0┬▒0.8╬╝s 0.59 bench_lib.Pad.time_pad((10, 10, 10), 1, 'reflect')
- 57.1┬▒1╬╝s 33.5┬▒2╬╝s 0.59 bench_lib.Pad.time_pad((10, 100), (0, 5), 'wrap')
- 52.0┬▒2╬╝s 30.4┬▒1╬╝s 0.58 bench_lib.Pad.time_pad((1000,), 1, 'edge')
- 42.6┬▒2╬╝s 24.9┬▒0.9╬╝s 0.58 bench_lib.Pad.time_pad((1000,), 3, 'wrap')
- 15.0┬▒3╬╝s 8.73┬▒0.3╬╝s 0.58 bench_core.CountNonzero.time_count_nonzero_multi_axis(1, 100, <type 'bool'>)
- 16.0┬▒3╬╝s 9.29┬▒0.3╬╝s 0.58 bench_core.CountNonzero.time_count_nonzero_multi_axis(3, 100, <type 'int'>)
- 53.1┬▒1╬╝s 30.9┬▒2╬╝s 0.58 bench_lib.Pad.time_pad((1000,), 3, 'edge')
- 88.0┬▒8╬╝s 51.1┬▒3╬╝s 0.58 bench_lib.Pad.time_pad((10, 10, 10), 3, 'reflect')
- 44.6┬▒2╬╝s 25.9┬▒1╬╝s 0.58 bench_lib.Pad.time_pad((1000,), (0, 5), 'wrap')
- 90.3┬▒5╬╝s 51.9┬▒1╬╝s 0.57 bench_shape_base.Block2D.time_block2d((512, 512), 'uint8', (2, 2))
- 15.6┬▒0.5╬╝s 8.93┬▒0.3╬╝s 0.57 bench_linalg.Linalg.time_op('norm', 'float32')
- 102┬▒6╬╝s 58.3┬▒0.9╬╝s 0.57 bench_lib.Pad.time_pad((10, 10, 10), 1, 'edge')
- 80.1┬▒4╬╝s 45.6┬▒3╬╝s 0.57 bench_lib.Pad.time_pad((10, 100), 3, 'edge')
- 44.2┬▒2╬╝s 24.9┬▒1╬╝s 0.56 bench_lib.Pad.time_pad((1000,), 1, 'wrap')
- 71.6┬▒8╬╝s 39.5┬▒1╬╝s 0.55 bench_lib.Pad.time_pad((10, 10, 10), 1, 'wrap')
- 81.7┬▒10╬╝s 44.8┬▒2╬╝s 0.55 bench_lib.Pad.time_pad((10, 100), 1, 'edge')
- 420┬▒90╬╝s 230┬▒10╬╝s 0.55 bench_shape_base.Block.time_3d(10, 'block')
- 114┬▒20╬╝s 62.3┬▒2╬╝s 0.55 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'constant')
- 5.76┬▒0.1╬╝s 3.13┬▒0.08╬╝s 0.54 bench_core.CorrConv.time_convolve(50, 10, 'same')
- 5.30┬▒0.1╬╝s 2.84┬▒0.08╬╝s 0.54 bench_core.CorrConv.time_correlate(50, 100, 'valid')
- 92.5┬▒4╬╝s 49.3┬▒1╬╝s 0.53 bench_shape_base.Block2D.time_block2d((256, 256), 'uint32', (2, 2))
- 13.5┬▒3╬╝s 7.07┬▒0.2╬╝s 0.52 bench_reduce.MinMax.time_min(<type 'numpy.float32'>)
- 7.66┬▒1╬╝s 3.88┬▒0.2╬╝s 0.51 bench_core.CorrConv.time_convolve(50, 100, 'valid')
- 29.0┬▒3╬╝s 14.5┬▒0.8╬╝s 0.50 bench_shape_base.Block.time_no_lists(10)
- 6.62┬▒0.3╬╝s 3.30┬▒0.2╬╝s 0.50 bench_core.CorrConv.time_convolve(1000, 1000, 'valid')
- 74.2┬▒7╬╝s 36.2┬▒0.9╬╝s 0.49 bench_shape_base.Block2D.time_block2d((256, 256), 'uint16', (2, 2))
- 5.55┬▒0.3╬╝s 2.70┬▒0.2╬╝s 0.49 bench_core.CorrConv.time_convolve(50, 10, 'valid')
- 73.9┬▒20╬╝s 35.8┬▒2╬╝s 0.48 bench_lib.Pad.time_pad((10, 100), 1, 'reflect')
- 224┬▒20╬╝s 107┬▒7╬╝s 0.48 bench_shape_base.Block2D.time_block2d((256, 256), 'uint64', (4, 4))
- 3.87┬▒0.1╬╝s 1.83┬▒0.06╬╝s 0.47 bench_core.CountNonzero.time_count_nonzero(2, 100, <type 'str'>)
- 109┬▒30╬╝s 51.5┬▒3╬╝s 0.47 bench_lib.Pad.time_pad((10, 10, 10), (0, 5), 'edge')
- 240┬▒20╬╝s 112┬▒4╬╝s 0.47 bench_shape_base.Block2D.time_block2d((512, 512), 'uint16', (4, 4))
- 337┬▒40╬╝s 158┬▒7╬╝s 0.47 bench_shape_base.Block2D.time_block2d((512, 512), 'uint32', (4, 4))
- 188┬▒8╬╝s 88.0┬▒2╬╝s 0.47 bench_shape_base.Block2D.time_block2d((512, 512), 'uint8', (4, 4))
- 4.39┬▒0.2╬╝s 2.04┬▒0.09╬╝s 0.47 bench_core.CountNonzero.time_count_nonzero(3, 10000, <type 'bool'>)
- 73.2┬▒4╬╝s 33.9┬▒0.5╬╝s 0.46 bench_shape_base.Block2D.time_block2d((128, 128), 'uint64', (2, 2))
- 5.48┬▒1╬╝s 2.44┬▒0.1╬╝s 0.45 bench_core.CountNonzero.time_count_nonzero(2, 100, <type 'object'>)
- 4.46┬▒0.1╬╝s 1.97┬▒0.08╬╝s 0.44 bench_core.CorrConv.time_correlate(50, 10, 'full')
- 30.4┬▒9╬╝s 13.3┬▒0.3╬╝s 0.44 bench_shape_base.Block.time_no_lists(1)
- 7.05┬▒0.2╬╝s 3.05┬▒0.06╬╝s 0.43 bench_reduce.SmallReduction.time_small
- 7.35┬▒1╬╝s 3.12┬▒0.2╬╝s 0.42 bench_core.CorrConv.time_convolve(50, 10, 'full')
- 4.36┬▒0.1╬╝s 1.84┬▒0.07╬╝s 0.42 bench_core.CorrConv.time_correlate(50, 10, 'same')
- 3.51┬▒0.2╬╝s 1.46┬▒0.05╬╝s 0.42 bench_core.CountNonzero.time_count_nonzero(1, 100, <type 'object'>)
- 4.03┬▒0.05╬╝s 1.66┬▒0.1╬╝s 0.41 bench_core.CorrConv.time_correlate(1000, 1000, 'valid')
- 199┬▒10╬╝s 80.1┬▒3╬╝s 0.40 bench_shape_base.Block2D.time_block2d((256, 256), 'uint32', (4, 4))
- 3.98┬▒0.2╬╝s 1.60┬▒0.08╬╝s 0.40 bench_core.CountNonzero.time_count_nonzero(2, 10000, <type 'bool'>)
- 61.8┬▒2╬╝s 24.8┬▒1╬╝s 0.40 bench_shape_base.Block2D.time_block2d((256, 256), 'uint8', (2, 2))
- 4.13┬▒0.1╬╝s 1.62┬▒0.05╬╝s 0.39 bench_core.CorrConv.time_correlate(50, 10, 'valid')
- 61.6┬▒2╬╝s 23.9┬▒1╬╝s 0.39 bench_shape_base.Block2D.time_block2d((128, 128), 'uint32', (2, 2))
- 184┬▒10╬╝s 70.5┬▒3╬╝s 0.38 bench_shape_base.Block2D.time_block2d((256, 256), 'uint16', (4, 4))
- 56.1┬▒4╬╝s 21.0┬▒0.9╬╝s 0.38 bench_shape_base.Block2D.time_block2d((64, 64), 'uint64', (2, 2))
- 40.0┬▒2╬╝s 15.0┬▒0.6╬╝s 0.37 bench_shape_base.Block.time_block_simple_column_wise(10)
- 121┬▒2╬╝s 45.1┬▒2╬╝s 0.37 bench_shape_base.Block.time_nested(1)
- 179┬▒4╬╝s 66.1┬▒4╬╝s 0.37 bench_shape_base.Block2D.time_block2d((128, 128), 'uint64', (4, 4))
- 59.8┬▒2╬╝s 22.0┬▒1╬╝s 0.37 bench_shape_base.Block2D.time_block2d((128, 128), 'uint16', (2, 2))
- 3.19┬▒0.05╬╝s 1.17┬▒0.02╬╝s 0.37 bench_core.CountNonzero.time_count_nonzero(1, 100, <type 'str'>)
- 54.0┬▒3╬╝s 19.7┬▒1╬╝s 0.37 bench_shape_base.Block2D.time_block2d((32, 32), 'uint64', (2, 2))
- 56.9┬▒1╬╝s 20.7┬▒0.7╬╝s 0.36 bench_shape_base.Block2D.time_block2d((64, 64), 'uint32', (2, 2))
- 3.14┬▒0.1╬╝s 1.14┬▒0.04╬╝s 0.36 bench_core.CountNonzero.time_count_nonzero(1, 10000, <type 'bool'>)
- 92.7┬▒2╬╝s 33.7┬▒2╬╝s 0.36 bench_shape_base.Block.time_block_complicated(1)
- 104┬▒4╬╝s 37.8┬▒1╬╝s 0.36 bench_shape_base.Block.time_block_complicated(10)
- 128┬▒5╬╝s 45.5┬▒2╬╝s 0.36 bench_shape_base.Block.time_nested(10)
- 196┬▒100╬╝s 69.4┬▒3╬╝s 0.35 bench_ma.Concatenate.time_it('unmasked+masked', 2)
- 153┬▒5╬╝s 53.9┬▒2╬╝s 0.35 bench_shape_base.Block2D.time_block2d((128, 128), 'uint16', (4, 4))
- 39.4┬▒2╬╝s 13.8┬▒0.5╬╝s 0.35 bench_shape_base.Block.time_block_simple_column_wise(1)
- 53.5┬▒2╬╝s 18.7┬▒1╬╝s 0.35 bench_shape_base.Block2D.time_block2d((32, 32), 'uint8', (2, 2))
- 55.2┬▒2╬╝s 19.3┬▒0.6╬╝s 0.35 bench_shape_base.Block2D.time_block2d((32, 32), 'uint16', (2, 2))
- 16.9┬▒1╬╝s 5.89┬▒0.5╬╝s 0.35 bench_core.Core.time_dstack_l
- 60.6┬▒3╬╝s 21.1┬▒0.6╬╝s 0.35 bench_shape_base.Block2D.time_block2d((128, 128), 'uint8', (2, 2))
- 25.5┬▒0.2╬╝s 8.88┬▒0.3╬╝s 0.35 bench_shape_base.Block.time_block_simple_row_wise(10)
- 54.6┬▒3╬╝s 19.0┬▒0.6╬╝s 0.35 bench_shape_base.Block2D.time_block2d((16, 16), 'uint64', (2, 2))
- 52.6┬▒2╬╝s 18.2┬▒0.7╬╝s 0.35 bench_shape_base.Block2D.time_block2d((16, 16), 'uint16', (2, 2))
- 6.57┬▒2╬╝s 2.25┬▒0.08╬╝s 0.34 bench_core.CountNonzero.time_count_nonzero(3, 100, <type 'str'>)
- 24.3┬▒1╬╝s 8.30┬▒0.6╬╝s 0.34 bench_shape_base.Block.time_block_simple_row_wise(1)
- 148┬▒3╬╝s 50.0┬▒3╬╝s 0.34 bench_shape_base.Block2D.time_block2d((16, 16), 'uint32', (4, 4))
- 171┬▒8╬╝s 57.9┬▒4╬╝s 0.34 bench_shape_base.Block2D.time_block2d((256, 256), 'uint8', (4, 4))
- 159┬▒5╬╝s 53.8┬▒1╬╝s 0.34 bench_shape_base.Block2D.time_block2d((64, 64), 'uint64', (4, 4))
- 171┬▒20╬╝s 57.7┬▒2╬╝s 0.34 bench_shape_base.Block2D.time_block2d((128, 128), 'uint32', (4, 4))
- 3.15┬▒0.3╬╝s 1.06┬▒0.03╬╝s 0.34 bench_core.CountNonzero.time_count_nonzero(3, 100, <type 'int'>)
- 55.7┬▒5╬╝s 18.7┬▒0.2╬╝s 0.34 bench_shape_base.Block2D.time_block2d((16, 16), 'uint8', (2, 2))
- 158┬▒7╬╝s 52.6┬▒3╬╝s 0.33 bench_shape_base.Block2D.time_block2d((128, 128), 'uint8', (4, 4))
- 153┬▒4╬╝s 50.7┬▒1╬╝s 0.33 bench_shape_base.Block2D.time_block2d((32, 32), 'uint64', (4, 4))
- 152┬▒7╬╝s 50.3┬▒1╬╝s 0.33 bench_shape_base.Block2D.time_block2d((16, 16), 'uint8', (4, 4))
- 53.6┬▒3╬╝s 17.7┬▒0.4╬╝s 0.33 bench_shape_base.Block2D.time_block2d((16, 16), 'uint32', (2, 2))
- 156┬▒4╬╝s 51.4┬▒3╬╝s 0.33 bench_shape_base.Block2D.time_block2d((64, 64), 'uint8', (4, 4))
- 148┬▒3╬╝s 48.2┬▒2╬╝s 0.33 bench_shape_base.Block2D.time_block2d((16, 16), 'uint16', (4, 4))
- 160┬▒10╬╝s 52.0┬▒1╬╝s 0.33 bench_shape_base.Block2D.time_block2d((64, 64), 'uint32', (4, 4))
- 159┬▒8╬╝s 51.4┬▒3╬╝s 0.32 bench_shape_base.Block2D.time_block2d((64, 64), 'uint16', (4, 4))
- 59.8┬▒3╬╝s 19.3┬▒1╬╝s 0.32 bench_shape_base.Block2D.time_block2d((32, 32), 'uint32', (2, 2))
- 153┬▒4╬╝s 49.4┬▒2╬╝s 0.32 bench_shape_base.Block2D.time_block2d((32, 32), 'uint32', (4, 4))
- 15.6┬▒0.6╬╝s 5.03┬▒0.3╬╝s 0.32 bench_core.Core.time_vstack_l
- 154┬▒7╬╝s 49.7┬▒2╬╝s 0.32 bench_shape_base.Block2D.time_block2d((32, 32), 'uint8', (4, 4))
- 59.6┬▒6╬╝s 19.1┬▒0.8╬╝s 0.32 bench_shape_base.Block2D.time_block2d((64, 64), 'uint8', (2, 2))
- 3.03┬▒0.4╬╝s 969┬▒30ns 0.32 bench_core.CountNonzero.time_count_nonzero(2, 100, <type 'int'>)
- 120┬▒10╬╝s 38.4┬▒2╬╝s 0.32 bench_shape_base.Block.time_3d(1, 'block')
- 156┬▒5╬╝s 49.3┬▒1╬╝s 0.32 bench_shape_base.Block2D.time_block2d((16, 16), 'uint64', (4, 4))
- 164┬▒10╬╝s 49.3┬▒2╬╝s 0.30 bench_shape_base.Block2D.time_block2d((32, 32), 'uint16', (4, 4))
- 65.7┬▒10╬╝s 19.6┬▒0.7╬╝s 0.30 bench_shape_base.Block2D.time_block2d((64, 64), 'uint16', (2, 2))
- 2.82┬▒0.08╬╝s 732┬▒30ns 0.26 bench_core.CountNonzero.time_count_nonzero(1, 100, <type 'int'>)
- 2.77┬▒0.07╬╝s 664┬▒30ns 0.24 bench_core.CountNonzero.time_count_nonzero(2, 100, <type 'bool'>)
- 2.61┬▒0.1╬╝s 624┬▒20ns 0.24 bench_core.CountNonzero.time_count_nonzero(1, 100, <type 'bool'>)
- 16.8┬▒3╬╝s 3.97┬▒0.2╬╝s 0.24 bench_core.Core.time_hstack_l
- 2.78┬▒0.1╬╝s 637┬▒20ns 0.23 bench_core.CountNonzero.time_count_nonzero(3, 100, <type 'bool'>)
- 2.36┬▒0.2╬╝s 207┬▒5ns 0.09 bench_overrides.ArrayFunction.time_mock_broadcast_to_numpy
- 2.68┬▒0.1╬╝s 221┬▒7ns 0.08 bench_overrides.ArrayFunction.time_mock_concatenate_numpy
- 2.58┬▒0.1╬╝s 201┬▒10ns 0.08 bench_overrides.ArrayFunction.time_mock_broadcast_to_duck
- 3.02┬▒0.2╬╝s 222┬▒6ns 0.07 bench_overrides.ArrayFunction.time_mock_concatenate_duck
- 4.29┬▒0.3╬╝s 216┬▒6ns 0.05 bench_overrides.ArrayFunction.time_mock_concatenate_mixed
- 142┬▒20╬╝s 213┬▒8ns 0.00 bench_overrides.ArrayFunction.time_mock_concatenate_many
SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рдХреЗ рд▓рд┐рдП https://docs.google.com/spreadsheets/d/15-AFI_cmZqfkU6mo2p1znsQF2E52PEXpF68QqYqEar4/edit#gid = 0 рднреА
рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╕реБрдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдИ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, np.block()
ред
@shoyer - рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп ndarray
ред # 12321 рджреЗрдЦреЗрдВред
@shoyer - рдореИрдВрдиреЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдореЗрдВ рджреЛ рдореБрджреНрджреЗ рдЙрдард╛рдП рд╣реИрдВ рдЬреЛ рд╢рд╛рдпрдж рдпрд╣рд╛рдВ рднреА
types
рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? (рдХреЗрд╡рд▓ рдЙрди рддрд░реНрдХреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЬреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред) рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред (рджреЗрдЦреЗрдВ # 12327)редndarray.__array_function__
рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ __array_function__
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ? рдпрд╣ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рд▓рд┐рд╕реНрдХреЛрд╡ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд┐рджреНрдзрд╛рдВрдд рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдпрд╣ рджрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдорд╛рдирдд рдХрд╛ рдореМрдХрд╛ рд╣реИред рдпрд╣ ndarray.__array_function__
рдЕрдВрджрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред (рдФрд░ рдореЗрдВ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ __array_ufunc__
...) рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП # 12,328 рджреЗрдЦреЗрдВ __array_function__
рдХреЗрд╡рд▓ред@shoyer - (1) рдХреЗ рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП # 12327 рджреЗрдЦреЗрдВ - рдпрджрд┐ рд╣рдо рдЗрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ NEP рдХреЛ рднреА рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ (2) рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП # 12328, рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдореИрдВ рдпрд╣рд╛рдВ рджреЛрдиреЛрдВ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдкрд░ +1 рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдбрд┐рд╕реНрдкреИрдЪрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдирд╛рдо https://github.com/numpy/numpy/pull/12789 рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЖрдпрд╛, рдЬрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЛ TypeError: _pad_dispatcher missing 1 required positional argument
рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ
Https://github.com/numpy/numpy/issues/12028#issuecomment -429377396 (рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдХреЗ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдПрдХ рдЪреМрдерд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝реВрдВрдЧрд╛:
рд╡рд┐рдХрд▓реНрдк 4 : рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдкреИрдЪрд░ рд▓рд┐рдЦреЗрдВ:
def sin(a):
return (a,)
@array_function_dispatch(sin)
def sin(a):
...
def cos(a):
return (a,)
@array_function_dispatch(cos)
def cos(a):
...
рд▓рд╛рдн:
рдиреБрдХрд╕рд╛рди:
pad
рдЧрд▓рдд рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ)редрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ _after_ dispatcher рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЗрд╖рдгрдХрд░реНрддрд╛ рдирд╛рдо рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ np.arange рдпрд╛ np.empty рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдкреНрд░реЗрд╖рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рдХрд▓реНрдк NumPy рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдПрдирдИрдкреА рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИ? рдХреНрдпрд╛ рдЗрд╕ рдмрджрд▓рд╛рд╡ рд╕реЗ рдХреБрдЫ рдЯреВрдЯреЗрдЧрд╛?
np.arange
рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП, https://github.com/numpy/numpy/issues/12379 рджреЗрдЦреЗрдВред
рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ np.empty()
рдкреНрд░реЗрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рд╡рд╣рд╛рдБ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рдЖрдХреГрддрд┐ рдФрд░ рдПрдХ dtype рд╣реИред рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ np.empty_like()
рдПрдХ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ https://github.com/numpy/numpy/pull/13046 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 4 : рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдкреИрдЪрд░ рд▓рд┐рдЦреЗрдВ:
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдкрдирд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ np.empty () рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдбрд┐рд╕реНрдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рдЖрдХреГрддрд┐ рдФрд░ рдПрдХ dtype
рдЖрдк рдЙрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░реЗрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рдХрд╕реНрдЯрдо рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЖрд▓рд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдЖрдХрд╛рд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрд╛рдВрдХ рдирд╣реАрдВ рд▓реМрдЯрд╛рддреА рд╣реИ, рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:
class ExprShape:
def __getitem__(self, i):
return ('getitem', self, i)
def __len__(self):
return ('len', self)
numpy.empty(ExprShape())
рдЬреЛ рдореИрдВ ExprArray('empty', ExprShape())
рддрд░рд╣ рдХреБрдЫ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╣рд╛рдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╣рдо рдЖрдХрд╛рд░ рдкрд░ рднреА рдкреНрд░реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ / рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреИрд╕реЗ empty_like
shape
) рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛?
рдореИрдВ рдЬрд┐рди рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡реЗ size
рддрд░реНрдХ np.random.RandomState
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдЙрди рд╕рднреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - http://www.numpy.org/ рджреЗрдЦреЗрдВ # callable -objects-generate-at-runtime
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд░рдгреА рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреИрд╕реЗ рдХрд┐ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЦрд╛рд▓реА_ рдЬреИрд╕рд╛) рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛?
рдпрджрд┐ рд╣рдо рдореМрдЬреВрджрд╛ API рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ NumPy рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмреИрдХрдПрдВрдб рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдирдкреА рдЬреИрд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде scipy.optimize.differential_evolution
рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ, рдЬреЛ рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЙрд▓ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рддреЗ рд╣реИрдВред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ np.full
, рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ numpy рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрдирдкреБрдЯ рдкрд╛рд░рд┐рдд рдХрд░ рдореЗрдВ рдпрд╣ рднреА рдкреНрд░рддреАрдХ рдЪрд┐рдиреНрд╣ рд╣реИред
рдпрджрд┐ рд╣рдо рдореМрдЬреВрджрд╛ API рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ NumPy рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмреИрдХрдПрдВрдб рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред
рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред np.array()
рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╕рд░рдгреА рдирд┐рд░реНрдорд╛рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, energies = np.full(num_members, np.inf)
рд╕реЗ energies = np.full_like(population, np.inf, shape=num_members)
рдмрджрд▓рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдФрд░ рдкрдардиреАрдп рдкрд░рд┐рд╡рд░реНрддрди рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред Np.array () рдХреА рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╕рд░рдгреА рдирд┐рд░реНрдорд╛рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ np.array
рдХрд╛ рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрднреА рднреА 100% рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдКрд░реНрдЬрд╛ = np.full (num_members, np.inf) рдХреЛ рдКрд░реНрдЬрд╛ = np.full_like (рдЬрдирд╕рдВрдЦреНрдпрд╛, np.inf, рдЖрдХрд╛рд░ = num_members) рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдПрдХ рдЖрд╕рд╛рди рдФрд░ рдкрдардиреАрдп рдкрд░рд┐рд╡рд░реНрддрди рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╛ рддреЛ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:
рдЙрди рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ np.full
рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ NEP-18 рдХрд╛ рд▓рдХреНрд╖реНрдп рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╣реИ, рдЬрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдореВрд▓ NumPy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрдВред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рджрд░реНрд╢рди / рдЬрдЯрд┐рд▓рддрд╛ рдЯреНрд░реЗрдбрдСрдл рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЪреАрд▓рд╛рдкрди рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐
np.array
рдХрд╛ рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдард┐рди рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрднреА рднреА 100% рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдПрдирдИрдкреА 22 рдореЗрдВ рдпрд╣рд╛рдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо numpy.ndarray
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП np.asarray()
рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ np.asarray()
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдХреЗ рдиреАрдЪреЗ numpy.ndarray
рдореЗрд▓ рдЦрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдХреЛрдб рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЧреИрд░-рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╣реИред рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд░рдгреА рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рдСрдкреНрдЯ-рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рджрд░реНрд╢рди / рдЬрдЯрд┐рд▓рддрд╛ рдЯреНрд░реЗрдбрдСрдл рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЪреАрд▓рд╛рдкрди рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рд╛рдБред NEP 18 рдХреЛ рдбреНрд░реЙрдк-рдЗрди NumPy рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реИред
рдореИрдВрдиреЗ __numpy_implementation__
рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП NEP-18 рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд╛ рдорд╕реМрджрд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ:
https://github.com/numpy/numpy/pull/13305
рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдо numpy.testing
рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЯрд╛рд▓рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ: https://github.com/numpy/numpy/issues/13588
рдореИрдВ рдЬрд▓реНрдж рд╣реА рдРрд╕рд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ ...
рдПрдХ рд╕рдВрд╢реЛрдзрди рд╣реИ рдЬреЛ рдореИрдВ рдПрдирдИрдкреА рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдк-рд▓реЗрдЦрдХреЛрдВ рдХреЛ NEP-18 рдХреА рдХреНрдпрд╛ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ: https://github.com/numpy/numpy/pull/13633
рдЬрдм рдореИрдВрдиреЗ gh-13329 рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрдм рдореИрдВрдиреЗ рдкреНрд░рдпреЛрдЬреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛- # 13588 1.17 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реБрдзрд╛рд░ рдФрд░ arange
gh-12379 рдЕрднреА рднреА 1.17 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
# 13728 рднреА рд╣реИ - рдбрд┐рд╕реНрдкреИрдЪрд░ рдореЗрдВ histogram[2d]d
рд▓рд┐рдП рдПрдХ рдмрдЧ
рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реБрдзрд╛рд░ рдФрд░ ahh-12379 рдХреЛ рдЕрднреА рднреА 1.17 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЧрд╛рдпрдм рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ gh-13844 рдЦреЛрд▓рд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХреНрд╕ arange
рдЦреБрд▓реЗ рдореБрджреНрджреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
@shoyer рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдирдИрдкреА 22 рдореЗрдВ рдпрд╣рд╛рдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо
numpy.ndarray
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПnp.asarray()
рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАредрд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐
np.asarray()
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рд░рдгреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдореЗрдореЛрд░реА рд▓реЗрдЖрдЙрдЯ рдХреЗ рдиреАрдЪреЗnumpy.ndarray
рдореЗрд▓ рдЦрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИредрдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдХреЛрдб рдЯреВрдЯ рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдЧреИрд░-рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╣реИред рдбрд╛рдЙрдирд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рд░рдгреА рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдкрд╣рд▓реВ рдХреЛ рдСрдкреНрдЯ-рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рдБред NEP 18 рдХреЛ рдбреНрд░реЙрдк-рдЗрди NumPy рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реИред