Numpy: рдлреНрд░реЛрдмреЗрдирд┐рдпрд╕ рдиреЙрд░реНрдо рд╡реИрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд?

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

рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рд╢реНрди рд╕реЗ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ "рджрд░реНрд╢рди" рдкреНрд░рд╢реНрди рдХрд╛ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдлреНрд░реЛрдмреЗрдирд┐рдпрд╕ рдиреЙрд░реНрдо рд╡реЗрдХреНрдЯрд░ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╕реНрд░реЛрдд: рд╡реЛрд▓реНрдлреНрд░рд╛рдо

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕реБрдиреНрди рдореЗрдВ рдлреНрд░реЛрдмреЗрдирд┐рдпрд╕ рдиреЙрд░реНрдо рд╡реИрдХреНрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

import numpy as np
a = np.random.rand(10, 1)
b = np.squeeze(a)
print(np.linalg.norm(a, 'fro'))
print(np.linalg.norm(b, 'fro'))

рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк:

1.7594677278427366
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
//anaconda3/lib/python3.7/site-packages/numpy/linalg/linalg.py in norm(x, ord, axis, keepdims)
   2515             try:
-> 2516                 ord + 1
   2517             except TypeError:

TypeError: can only concatenate str (not "int") to str

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-18-2ace847024a5> in <module>
      3 b = np.squeeze(a)
      4 print(np.linalg.norm(a, 'fro'))
----> 5 print(np.linalg.norm(b, 'fro'))

<__array_function__ internals> in norm(*args, **kwargs)

//anaconda3/lib/python3.7/site-packages/numpy/linalg/linalg.py in norm(x, ord, axis, keepdims)
   2516                 ord + 1
   2517             except TypeError:
-> 2518                 raise ValueError("Invalid norm order for vectors.")
   2519             absx = abs(x)
   2520             absx **= ord

ValueError: Invalid norm order for vectors.
00 - Bug numpy.linalg good first issue

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

рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рдореЗрдВ рдереЛрдбрд╝реА рдФрд░ рдиреАрдЪреЗ рд╣реИ - рдпрджрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рддреНрд░реБрдЯрд┐ рд╕реЗ рдЯреНрд░реЗрд╕рдмреИрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдорд╛рдирдЬрдирдХ рдмрд┐рдЯ рдвреВрдВрдврдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ #14719 рдФрд░ #14215 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,> 2 рдЖрдпрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ - рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреАрдЖрд░ рдХреЛ рдХреНрд╡рд╛рд░реНрдЧ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдмрдЧ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрди: рдкрд░реАрдХреНрд╖рдг/рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди: NumPy рдХреЗ рдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк numpy/linalg/tests/test_linalg.py рдореЗрдВ linalg рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорджрдж рд╣реЛрдЧреА!

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

рдпрд╣ 'fro' kwarg рдХреЗ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдПрдХ рдмрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

>>> print(np.linalg.norm(b))
1.7547099704258247

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлреНрд░реЛрдмреЗрдирд┐рдпрд╕ рдорд╛рдирджрдВрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм ord kwarg рдХреЛрдИ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

xref gh-14719 рдФрд░ gh-14215: рд╣рдордиреЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХрднреА рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдХреЛрдИ рдмрдбрд╝рд╛ рдкреНрд░рддрд┐рд░реЛрдз рдирд╣реАрдВ рдерд╛, рддреЛ рдХреБрдЫ рдерд╛ред рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ ...

рдЬреИрд╕рд╛ рдХрд┐ рд░реЙрд╕ рдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореБрджреНрджрд╛/рдкреАрдЖрд░ рдХреЗрд╡рд▓ рдореВрд░реНрдд рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдпрд╣ "fro" рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдмрдЧ рд╣реИред

kwarg рд╣реИрдВрдбрд▓рд┐рдВрдЧ (рдФрд░ рд╕рд╛рде рдореЗрдВ рдкрд░реАрдХреНрд╖рдг) рдореЗрдВ рдмрдЧ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдЕрдЪреНрдЫрд╛ рдХреИрдЪ @TNonet

рдЪреВрдВрдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдХреНрдпрд╛ рдЙрдЪрд┐рдд рдкрд░реАрдХреНрд╖рдг рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ?

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдореБрдЭреЗ numpy рд░реЗрдкреЛ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдирд╛ рдерд╛ рдФрд░ setup.py рдЪрд▓рд╛рдирд╛ рдерд╛, рддреЛ рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдореИрдВ numpy рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХрд┐рд╕ numpy рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ?)

рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЕрдЧрд░ ord 'fro' рд╣реИ, рддреЛ рдиреАрдЪреЗ рдХреА рдкрдВрдХреНрддрд┐рдпрд╛рдБ 2512-14 рд╣реИрдВред

https://github.com/numpy/numpy/blob/dae4f67c797176c66281101be8f3b4d6c424735c/numpy/linalg/linalg.py#L2510 -L2524

рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

if ((ord is None) or 
    (ord in ('f', 'fro')) or 
    (ord == 2 and ndim == 1)): 

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИ рдХрд┐ nth рдСрд░реНрдбрд░ рд╕рд░рдгреА рдореЗрдВ рдПрдХ Forbenious рдорд╛рдирджрдВрдб рд╣реИ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рдореЗрдВ рдереЛрдбрд╝реА рдФрд░ рдиреАрдЪреЗ рд╣реИ - рдпрджрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рддреНрд░реБрдЯрд┐ рд╕реЗ рдЯреНрд░реЗрд╕рдмреИрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдорд╛рдирдЬрдирдХ рдмрд┐рдЯ рдвреВрдВрдврдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ #14719 рдФрд░ #14215 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,> 2 рдЖрдпрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реИ - рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреАрдЖрд░ рдХреЛ рдХреНрд╡рд╛рд░реНрдЧ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдмрдЧ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрди: рдкрд░реАрдХреНрд╖рдг/рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди: NumPy рдХреЗ рдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реАрдХреНрд╖рдг рдХрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк numpy/linalg/tests/test_linalg.py рдореЗрдВ linalg рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреА рдорджрдж рд╣реЛрдЧреА!

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

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

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

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

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

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

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