Numpy: ENH: `рдЕрдХреНрд╖` рддрд░реНрдХ рдХреЗ рд╕рд╛рде `random.shuffle` рдХрд╛ рд╡рд┐рдХрд▓реНрдкред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдХреНрддреВре░ 2014  ┬╖  35рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

numpy.random.shuffle рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ axis рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ-рдЖрдпрд╛рдореА рд╕реНрд▓рд╛рдЗрд╕ рдХреЛ рдлреЗрд░рдмрджрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ disarrange рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

def disarrange(a, axis=-1):
    """
    Shuffle `a` in-place along the given axis.

    Apply numpy.random.shuffle to the given axis of `a`.
    Each one-dimensional slice is shuffled independently.
    """
    b = a.swapaxes(axis, -1)
    # Shuffle `b` in-place along the last axis.  `b` is a view of `a`,
    # so `a` is shuffled in place, too.
    shp = b.shape[:-1]
    for ndx in np.ndindex(shp):
        np.random.shuffle(b[ndx])
    return

рдЙрджрд╛рд╣рд░рдг:

In [156]: a = np.arange(20).reshape(4,5)

In [157]: a
Out[157]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

In [158]: disarrange(a, axis=-1)

In [159]: a
Out[159]: 
array([[ 2,  0,  4,  3,  1],
       [ 8,  6,  7,  9,  5],
       [11, 14, 13, 10, 12],
       [19, 18, 16, 17, 15]])

In [160]: a = np.arange(20).reshape(4,5)

In [161]: disarrange(a, axis=0)

In [162]: a
Out[162]: 
array([[ 5, 11,  7, 13, 14],
       [ 0,  6,  2,  3,  4],
       [10,  1, 17, 18, 19],
       [15, 16, 12,  8,  9]])

рдпрд╣ рдЕрдиреБрд░реЛрдз рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрд╕ рдкреНрд░рд╢реНрди рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛: http://stackoverflow.com/questions/26310346/quickly-calculate-randomized-3d-numpy-array-from-2d-numpy-array/

01 - Enhancement numpy.random

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

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ np.apply_along_axis рд╕рд╛рде np.random.permutation рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

рдпрд╣ рди рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА -- рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ a . рдЬреЛрдбрд╝реЗрдВ
рдлреЗрд░рдмрджрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖ рддрд░реНрдХ? рдХреЛрдИ рдирд╣реАрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЬреИрд╕реЗ np.sumред

рд╢рдирд┐рд╡рд╛рд░, рдЕрдХреНрдЯреВрдмрд░ 11, 2014 рдХреЛ рд░рд╛рдд 9:36 рдмрдЬреЗ, рд╡реЙрд░реЗрди рд╡реЗрдХреЗрд╕рд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

numpy.random.shuffle рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐
рдПрдХ рдЕрдХреНрд╖ рддрд░реНрдХ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлреЗрд░рдмрджрд▓ рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдЖрдпрд╛рдореА рд╕реНрд▓рд╛рдЗрд╕ред рдпрд╣рд╛рдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд╣реВрдВрдЧрд╛ред
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдбреАрдИрдПрдлрд╝ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд (рдП, рдЕрдХреНрд╖ = -1):
"""
рджрд┐рдП рдЧрдП рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде-рд╕рд╛рде a рд╢рдлрд╝рд▓ рдХрд░реЗрдВред

Apply numpy.random.shuffle to the given axis of `a`.
Each one-dimensional slice is shuffled independently.
"""
b = a.swapaxes(axis, -1)
# Shuffle `b` in-place along the last axis.  `b` is a view of `a`,
# so `a` is shuffled in place, too.
shp = b.shape[:-1]
for ndx in np.ndindex(shp):
    np.random.shuffle(b[ndx])
return

рдЙрджрд╛рд╣рд░рдг:

[156] рдореЗрдВ: a = np.arange(20).reshape(4,5)

[157] рдореЗрдВ: рдП
рдЖрдЙрдЯ [157]:
рд╕рд░рдгреА ([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])

[158] рдореЗрдВ: рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд (рдП, рдЕрдХреНрд╖ = -1)

[159] рдореЗрдВ: рдП
рдЖрдЙрдЯ [159]:
рд╕рд░рдгреА ([[ 2, 0, 4, 3, 1],
[8, 6, 7, 9, 5],
[11, 14, 13, 10, 12],
[19, 18, 16, 17, 15]])

[160] рдореЗрдВ: a = np.arange(20).reshape(4,5)

[161] рдореЗрдВ: рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд (рдП, рдЕрдХреНрд╖ = 0)

[162] рдореЗрдВ: рдП
рдЖрдЙрдЯ [162]:
рд╕рд░рдгреА ([[5, 11, 7, 13, 14],
[0, 6, 2, 3, 4],
[10, 1, 17, 18, 19],
[15, 16, 12, 8, 9]])

рдпрд╣ рдЕрдиреБрд░реЛрдз рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрд╕ рдкреНрд░рд╢реНрди рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛:
http://stackoverflow.com/questions/26310346/quickly-calculate-randomized-3d-numpy-array-from-2d-numpy-array/

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/numpy/numpy/issues/5173ред

рдирдерд╛рдирд┐рдПрд▓ рдЬреЗ рд╕реНрдорд┐рде
рдкреЛрд╕реНрдЯрдбреЙрдХреНрдЯреЛрд░рд▓ рд╢реЛрдзрдХрд░реНрддрд╛ - рд╕реВрдЪрдирд╛ рд╡рд┐рдЬреНрдЮрд╛рди - рдПрдбрд┐рдирдмрд░реНрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп
http://vorpus.org

shuffle рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ axis=None рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рдПрдХ рдЖрдпрд╛рдореА рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИред

In [181]: a = np.arange(20).reshape(4,5)

In [182]: np.random.shuffle(a)

In [183]: a
Out[183]: 
array([[ 0,  1,  2,  3,  4],
       [15, 16, 17, 18, 19],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

рдЖрдк рдЗрд╕реЗ axis=0 рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рд╛рдкрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ 1-рдбреА рд╕реНрд▓рд╛рдЗрд╕ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдлреЗрд░рдмрджрд▓ рд╣реИред

2-рдбреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП, рдЖрдк a.T рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд░рдмрджрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ axis=1 , рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдлреЗрд░рдмрджрд▓ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛:

In [184]: a = np.arange(20).reshape(4,5)

In [185]: np.random.shuffle(a.T)

In [186]: a
Out[186]: 
array([[ 4,  1,  0,  3,  2],
       [ 9,  6,  5,  8,  7],
       [14, 11, 10, 13, 12],
       [19, 16, 15, 18, 17]])

disarrange , рдореИрдВ axis=None рдХреА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ np.random.shuffle(a.flat) ред

рдпрд╣ рдареАрдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рдлреЗрд░рдмрджрд▓ рдХреЛ shuffle рдЙрдЪрд┐рдд рддрд░реНрдХ рдЬреЛрдбрд╝рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИред

рд╢рд╛рдпрдж shuffle : axis рдФрд░ independent (рдпрд╛ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ) рдореЗрдВ рджреЛ рддрд░реНрдХ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирдпрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реЛрдЧрд╛:

def shuffle(a, independent=False, axis=0)

рдЬрдм independent рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд░реНрддрдорд╛рди shuffle рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЬрдм рд╕рд╣реА рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ disarrange рдЬреИрд╕рд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдУрд╣, рдЙрд╣, рдореИрдВрдиреЗ рдЕрднреА рдорд╛рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реВрдк рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рдерд╛
рд╕реЙрд░реНрдЯ рдЬреИрд╕реЗ рдХрд╛рд░реНрдп :-(ред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛
рд╢рдлрд▓рд┐рдВрдЧ-рдСрдл-рд╕реНрд▓рд╛рдЗрд╕ idx = arange(...); рдлреЗрд░рдмрджрд▓ (рдЖрдИрдбреАрдПрдХреНрд╕);
multi_dim_array [idx, ...]; рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдореБрдЭрд╕реЗ рдирд╣реАрдВ рдкреВрдЫрд╛ :-)

рдореИрдВ рдлреЗрд░рдмрджрд▓ рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ +1 рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рд┐рдВрдЧ рд╕рдореНрдореЗрд▓рди рд╣реИрдВ рдЬреЛ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ
np.sort, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╢реНрд░реЗрд╖реНрда рдирд╛рдо рдЬреИрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рдкрд░ рд╕реБрдЭрд╛рд╡ рднреА :-)

(рд╢рд╛рдпрдж "рд╣рд╛рдерд╛рдкрд╛рдИ"?)

рд╢рдирд┐рд╡рд╛рд░, рдЕрдХреНрдЯреВрдмрд░ 11, 2014 рдХреЛ рд░рд╛рдд 10:31 рдмрдЬреЗ, рд╡реЙрд░реЗрди рд╡реЗрдХреЗрд╕рд░ < рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com

рд▓рд┐рдЦрд╛ рдерд╛:

рдлреЗрд░рдмрджрд▓ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдХреНрд╖ = рдХреЛрдИ рдирд╣реАрдВ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ
рдПрдХ рдЖрдпрд╛рдореА рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рддрд░реНрдХред

[181] рдореЗрдВ: a = np.arange(20).reshape(4,5)

[182] рдореЗрдВ: np.random.shuffle(a)

[183] тАЛтАЛрдореЗрдВ: рдП
рдЖрдЙрдЯ [183]:
рд╕рд░рдгреА ([[0, 1, 2, 3, 4],
[15, 16, 17, 18, 19],
[5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])

рдЖрдк рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдХреНрд╖ = 0 рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд▓реЗрдХрд┐рди рд▓рд╛рдкрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ
1-рдбреА рд╕реНрд▓рд╛рдЗрд╕ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдлреЗрд░рдмрджрд▓ред

2-рдбреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдХреНрд╖ = 1 рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЯреА рдХреЛ рдлреЗрд░рдмрджрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛
рдЖрдкрдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдлреЗрд░рдмрджрд▓ рдорд┐рд▓рддрд╛ рд╣реИ:

[184] рдореЗрдВ: a = np.arange(20).reshape(4,5)

[185] рдореЗрдВ: np.random.shuffle(aT)

[186] рдореЗрдВ: рдП
рдЖрдЙрдЯ [186]:
рд╕рд░рдгреА ([[4, 1, 0, 3, 2],
[9, 6, 5, 8, 7],
[14, 11, 10, 13, 12],
[19, 16, 15, 18, 17]])

рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рдореЗрдВ, рдореИрдВ рдЕрдХреНрд╖ = рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рддрд╛
np.random.shuffle(a.flat)ред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдлреЗрд░рдмрджрд▓ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рдпрд╣ рдареАрдХ рд░рд╣реЗрдЧрд╛
рдлреЗрд░рдмрджрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рддрд░реНрдХ рдЬреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛
рдЙрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/numpy/numpy/issues/5173#issuecomment -58765220ред

рдирдерд╛рдирд┐рдПрд▓ рдЬреЗ рд╕реНрдорд┐рде
рдкреЛрд╕реНрдЯрдбреЙрдХреНрдЯреЛрд░рд▓ рд╢реЛрдзрдХрд░реНрддрд╛ - рд╕реВрдЪрдирд╛ рд╡рд┐рдЬреНрдЮрд╛рди - рдПрдбрд┐рдирдмрд░реНрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп
http://vorpus.org

рдЖрд╣, рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ sort рдПрдирд╛рд▓реЙрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдУрд╣, рдЙрд╣, рдореИрдВрдиреЗ рдЕрднреА рдорд╛рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдЬреИрд╕реЗ рд╕реЙрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рдерд╛

рдореИрдВ рднреА рд╣реИрд░рд╛рди рдерд╛, рдФрд░ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкреНрд░рд╢реНрди рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрдиреНрдп рдЕрдиреБрднрд╡реА рд╕реБрдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗред рдореИрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдФрд╕рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ
рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП -- рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
рджреЛ рд╡реНрдпрд╡рд╣рд╛рд░, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ,
рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдмрд╣реБрдд FutureWarning рдФрд░ рдЪрд┐рд▓реНрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрджрд╕реВрд░рдд рд╕рдВрдХреНрд░рдордг рд╣реИ ...

рд╢рдирд┐рд╡рд╛рд░, рдЕрдХреНрдЯреВрдмрд░ 11, 2014 рдХреЛ рд░рд╛рдд 11:00 рдмрдЬреЗ, рд╡реЙрд░реЗрди рд╡реЗрдХреЗрд╕рд░ < рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com

рд▓рд┐рдЦрд╛ рдерд╛:

рдУрд╣, рдЙрд╣, рдореИрдВрдиреЗ рдЕрднреА рдорд╛рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реВрдк рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рдВрдЧрдд рдерд╛
рд╕реЙрд░реНрдЯ . рдЬреИрд╕реЗ рдХрд╛рд░реНрдп

рдореИрдВ рднреА рд╣реИрд░рд╛рди рдерд╛, рдФрд░ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдкреНрд░рд╢реНрди, рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрдиреНрдп рдЕрдиреБрднрд╡реА рд╕реБрдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗред рдмреАрдорд╛рд░
рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/numpy/numpy/issues/5173#issuecomment -58766099ред

рдирдерд╛рдирд┐рдПрд▓ рдЬреЗ рд╕реНрдорд┐рде
рдкреЛрд╕реНрдЯрдбреЙрдХреНрдЯреЛрд░рд▓ рд╢реЛрдзрдХрд░реНрддрд╛ - рд╕реВрдЪрдирд╛ рд╡рд┐рдЬреНрдЮрд╛рди - рдПрдбрд┐рдирдмрд░реНрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп
http://vorpus.org

рдЙрдирдХреЗ рдкрд╛рд╕ рдмреЗрд╣рддрд░реАрди рдирд╛рдо рдЬреИрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рдкрд░ рднреА рд╕реБрдЭрд╛рд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдореЗрдВ Sue рдирд╛рдо рдХреЗ рдПрдХ рдлрдВрдХреНрд╢рди рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдмрд╕ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ +1 рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рднреА рдЙрдореНрдореАрдж рдереА рдХрд┐ рдпрд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реЛрдЧрд╛, рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрдХреНрд╖ = рдПрди)ред рдХреНрдпрд╛ рдбрд╛рдХ рд╕реВрдЪреА рдкрд░ рдХреЛрдИ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдзрд╛рдЧрд╛ рдпрд╣рд╛рдБ рд╣реИ:
http://thread.gmane.org/gmane.comp.python.numeric.general/59014

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!

рдореИрдВ рднреА рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛!

рдмрд╣реБ-рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП https://stackoverflow.com/a/35647011/3401634 рдХреЗ рдЕрдиреБрд╕рд╛рд░ X

np.random.shuffle(X)

рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐

np.take(X, np.random.permutation(X.shape[0]), axis=0, out=X)

рддреЛ рдХреНрдпреЛрдВ рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ

np.random.shuffle(X, axis=axis)

рдЬреИрд╕рд╛

np.take(X, np.random.permutation(X.shape[axis]), axis=axis, out=X)

рдбрд┐рдлрд╝реЙрд▓реНрдЯ axis=0 ?

рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░? рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ np.apply_along_axis рд╕рд╛рде np.random.permutation рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЗрд╕реЗ рдЕрдм #13829 рдХреА рд╡рдЬрд╣ рд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

(рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рдирдП рдлреЗрд░рдмрджрд▓ рдХреЛрдб рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ, рдореИрдВ https://github.com/numpy/numpy/pull/14662 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рд╡рд┐рд▓рдп рд╣реЛрдирд╛ред)

@wkschwartz , #13829 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдВ рдЕрдиреБрд░реЛрдзрд┐рдд рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реИред #13829 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдЕрдХреНрд╖ рдЕрднреА рднреА рд╕рд░рдгреА рдХреЛ 1-рдбреА рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдлреЗрд░рдмрджрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирддрд╛ рд╣реИред рдирдпрд╛ рдЕрдХреНрд╖ рддрд░реНрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЕрдХреНрд╖ рдХреЛ 1-рдбреА рдЕрдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдХреНрд╖ рдХреЗ рднреАрддрд░ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдлреЗрд░рдмрджрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

In [1]: import numpy as np                                                      

In [2]: rng = np.random.default_rng()                                           

In [3]: x = np.arange(20).reshape(2, 10)                                        

In [4]: x                                                                       
Out[4]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])

In [5]: rng.shuffle(x, axis=1)                                                  

In [6]: x                                                                       
Out[6]: 
array([[ 5,  9,  6,  4,  7,  0,  3,  2,  1,  8],
       [15, 19, 16, 14, 17, 10, 13, 12, 11, 18]])

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлреЗрд░рдмрджрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрддрдВрднреЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдХреЗ рдорд╛рди рд╕рдорд╛рди рд╣реИрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдлреЗрд░рдмрджрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП disarrange рдХреЛрдб рдореЗрдВ рд╣реИ:

In [10]: x = np.arange(20).reshape(2, 10)                                       

In [11]: x                                                                      
Out[11]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]])

In [12]: disarrange(x, axis=1)                                                  

In [13]: x                                                                      
Out[13]: 
array([[ 4,  3,  7,  8,  0,  6,  5,  2,  9,  1],
       [12, 15, 19, 17, 18, 14, 10, 13, 11, 16]])

рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╢рд╛рдпрдж рдмреБрдзрд╡рд╛рд░ рдХреА рдмреИрдардХ рдХреЗ рд▓рд┐рдП рднреАред рд╣рдордиреЗ рдЕрднреА choice рдФрд░ permutation рдореЗрдВ рдЙрдЪреНрдЪ рдЖрдпрд╛рдореА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ 1.18 рдореЗрдВ рднреА рдЕрдХреНрд╖ рддрд░реНрдХ (рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ рд╣реИ)ред

рдпреЗ рд╕рднреА рдореМрдЬреВрджрд╛ рдлреЗрд░рдмрджрд▓ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ shuffle the subarrays along this axis рдХреЗ рдмрдЬрд╛рдп shuffle along (individual) axis рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрдХреАрдирди рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛рдиреА рдпрд╣ "рд╕рд╛рде" рдпрд╛ рджрд┐рдП рдЧрдП рдЕрдХреНрд╖ рдХреЗ рднреАрддрд░ "рдУрд╡рд░" рдХреЗ рдмрдЬрд╛рдп рдлреЗрд░рдмрджрд▓ рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, рд▓рдЧрднрдЧ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ, рдореЗрдВ axis NumPy рдореЗрдВ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЬреИрд╕реЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреЗ рд╕рд╛рде apply_over_axes рдЬреЛ рдирд╛рдо рдореЗрдВ "рдкрд░" рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрддрдирд╛ рдирд┐рд░реНрднреАрдХ рд░рд╣реВрдВрдЧрд╛ рдФрд░ рджрд╛рд╡рд╛ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ over_axis=0 рдХрд░рдирд╛ рднреА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛! рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдЧрд▓рдд рдлреЗрд░рдмрджрд▓ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЬрд┐рдердм рдХреНрд░реЙрд╕-рд░реЗрдлрд░реЗрдВрд╕ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ https://github.com/numpy/numpy/pull/15121 рдкрд░ рдПрдХ рдХрд╛рд░реНрдп-рдкреНрд░рдЧрддрд┐ рдкреАрдЖрд░ рд╣реИ

@WarrenWeckesser рдЬреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ рдХрд┐ рд╣рдордиреЗ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ рдЕрд░реНрде рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред
рдФрд░ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЙрд╕ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо axis рддрд░реНрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ред рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдмрд╣реБрдЖрдпрд╛рдореА рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛...

рдореИрдВ рд╢рд╛рдпрдж рдЕрднреА рдУрд╡рд░рд░рд┐рдПрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдереЛрдбрд╝рд╛ рдирд╛рд░рд╛рдЬ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдпрд╛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ ... рд▓реЗрдХрд┐рди рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рддрд░реНрдХ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИред рдпрд╣ рдпрд╛рдж рдЖрддреА рд╣реИ рдХрд┐ рдпрд╣ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рдХреА рдЙрдореНрдореАрдж рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ np.sort рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@seberg , рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ axis рдХреА рджреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП "рдУрд╡рд░" рдФрд░ "рд╕рд╛рде" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдкрдХреЗ рд╕рдореНрдореЗрд▓рди рдХрд╛ рдкрд╛рд▓рди рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ axis рд▓рд┐рдП shuffle рдФрд░ permutation рдХреА рдореМрдЬреВрджрд╛ "рд╕рд╛рде" рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред :)

рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди shuffle рдФрд░ permutation рдХреЗ рдПрдкреАрдЖрдИ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдзреБрд░реА рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдерд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдКрдкрд░ред рдПрдХ рд╡рд┐рдзрд┐ рдЬрдЧрд╣ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреА, рдФрд░ рджреВрд╕рд░реА рдПрдХ рдкреНрд░рддрд┐ рд▓реМрдЯрд╛рдПрдЧреАред рдЙрд╕ рд╕рдордп рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ permute рдФрд░ permuted рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП randomly_permute рдФрд░ randomly_permuted , рд▓реЗрдХрд┐рди рдЙрди рдирд╛рдореЛрдВ рдХреЛ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрди рдирд╛рдореЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рджреЛ рдирдП рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕реЗ, рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ permute рдФрд░ permuted рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдмрдВрдзрд┐рдд Generator рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗ:

meaning    operate     return
of axis    in-place     copy
-------    --------  -----------
"over"     shuffle   permutation
"along"    permute   permuted

(рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдЬреЛ рдзреБрд░реА рдкрд░ "рдУрд╡рд░" рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддреА рд╣реИрдВ, shuffle рдФрд░ permutation рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВред)

рджреЛ рдирдП рддрд░реАрдХреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рд░реНрдл рдПрдХ рд╣реИ, рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЬреЛ рдЗрди-рдкреНрд▓реЗрд╕ рдмрдирд╛рдо рдХреЙрдкреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рдЧрдП рд╣реИрдВ:

(рдП) рдПрдХ out рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВред рдЗрди-рдкреНрд▓реЗрд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рдРрд░реЗ рдХреЛ out ред рдпрджрд┐ out рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдлреЗрд░рдмрджрд▓ рдХреА рдЧрдИ рдкреНрд░рддрд┐ рд▓реМрдЯрд╛рдПрдВред
(рдмреА) рдПрдХ рдмреВрд▓рд┐рдпрди рдзреНрд╡рдЬ рдЬреЛрдбрд╝реЗрдВ рдЬреИрд╕реЗ copy рдпрд╛ inplace , рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрджрд╛ рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ axis рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдЗрдиреНрд╣реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ рдХрд┐ рд░реЙрдмрд░реНрдЯ рдХреЗрд░реНрди рдиреЗ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдереНрд░реЗрдб рдореЗрдВ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП independent рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЬрд┐рдХреНрд░ рд╣реИ):

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

( рд╕рдВрдкрд╛рджрдХреАрдп рд╡рд┐рд╖рдпрд╛рдВрддрд░ : рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЪрд░реНрдЪрд╛ рдореЗрдВ, рдиреЗрдорд╕реНрдкреЗрд╕ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, Generator рдиреЗрдорд╕реНрдкреЗрд╕) рдмрдврд╝рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ (рдХрднреА-рдХрднреА рдЗрд╕реЗ "рдиреЗрдорд╕реНрдкреЗрд╕ рдкреНрд░рджреВрд╖рдг" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЖрдЗрдП рд╕рд╣рдордд рд╣реИрдВ рдХрд┐, рд╣рд╛рдВ, рд╕рднреА рдЪреАрдЬреЗрдВ рд╕рдорд╛рди рд╣реЛрдиреЗ рдкрд░, рдПрдХ рдЫреЛрдЯрд╛ рдирд╛рдорд╕реНрдерд╛рди рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдпреЛрдВ рдХреА рддрд░рд╣, рдЯреНрд░реЗрдбрдСрдлрд╝ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдЫреЛрдЯрд╛ рд░рдЦрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдЬреАрдм рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЬреАрдд рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВред)

рдЗрддрдирд╛ рд╕рдм рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рд╕реБрдЭрд╛рдП рдЧрдП shuffle рдХреЗ рдореМрдЬреВрджрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рджреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝ рджрд┐рдП рдЧрдП рд╣реИрдВред

(1) shuffle(x, axis=0, independent=False) : рдмреВрд▓рд┐рдпрди рдзреНрд╡рдЬ independent рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ axis рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: рдЧрд▓рдд -> "рдУрд╡рд░", рд╕рдЪ -> "рд╕рд╛рде"ред (рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдирд╛рдо рд╣реИрдВ independent ред)
(2) shuffle(x, axis=0, iaxis=???) : рдПрдХ рджреВрд╕рд░рд╛ рддрд░реНрдХ, iaxis , "рд╕рд╛рде" рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдзреБрд░реА рджреЗрддрд╛ рд╣реИред (рдпрд╣ axis рд╕рд╛рде рдХреИрд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ iaxis рд▓рд┐рдП рдПрдХ рдорд╛рди рджреЗрдиреЗ рд╕реЗ axis рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред)

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

рдореИрдВ рдпрд╣рд╛рдВ рдПрдкреАрдЖрдИ рдмрдврд╝рд╛рдХрд░ рдЦреБрд╢ рд╣реВрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реЛрдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрд╛рд░рдг рд╣реИ:

  • рд╣рдо рд╢рд╛рдпрдж рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╣реИ
  • рдореМрдЬреВрджрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
  • рдХреБрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рд┐рдЪ рдХреЗ рд▓рд┐рдП kwarg рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЙрдмрд░реНрдЯ рдХреЗрд░реНрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд╣реАрдВ рдереЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЬреЛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ shuffle рдФрд░ permutation (рдФрд░ рд╢рд╛рдпрдж choice ) рдХреА рддреБрд▓рдирд╛ рдПрдХ рдЕрдиреБрдХреНрд░рдордг рд╕рдВрдЪрд╛рд▓рди (рдпрд╛рдиреА take ) рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ axis рд▓рд┐рдП рд╕рдорд╛рди рдЕрд░реНрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгреА-рдЬрд╛рдЧрд░реВрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрднреА рднреА рдПрдирдбреА рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдпрджрд┐ рдЖрдк arr[..., index] рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЕрдиреБрдХреНрд░рдордг рд╕реНрд╡рдпрдВ рднреА рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╡рд╣ рд╣реИ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдвреЗрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реА рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВ)ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ take_along_axis ND рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ "рд╕рд╛рде" рдЕрд░реНрде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ take рд▓рд┐рдП ND рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ (рднрд▓реЗ рд╣реА рдпрд╣ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реЛ)ред apply_along_axis рдФрд░ apply_over_axis рдЬрд╣рд╛рдВ рд╕реЗ рдореБрдЭреЗ "рдУрд╡рд░" рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдУрд╡рд░" рд╕рд╣реА рд╢рдмреНрдж рд╣реИ ...

рдореБрдЭреЗ рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд╛рд╣рд░реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП permutation (рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди shuffled рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ shuffle - shuffled , permute - permuted рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЙрдЪрд┐рдд рджрд┐рдЦрдиреЗ рд▓рдЧрддреА рд╣реИрдВред рдХреЛрдИ рднреА shuffled рдЬреЛрдбрд╝рдиреЗ рдФрд░ permutation рдкрд░ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЗрдЪреНрдЫреБрдХ рд╣реИ? permutation рднреА itertools.permutations , FWIW рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ permutation , permute , permuted рд╡рд┐рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди-рдзреНрд╡рдирд┐ рд╡рд╛рд▓реЗ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рднреНрд░рдорд┐рдд рдЯреНрд░рд┐рдкрд▓ рд╣реИред рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ (рд╕рдВрднрд╡рддрдГ рд▓рдВрдмреЗ рд╕рдордп рддрдХ)ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди-рдкреНрд▓реЗрд╕ рдмрдирд╛рдо рдиреЙрдЯ-рдЗрди-рдкреНрд▓реЗрд╕ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ NumPy рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ out= рд╕реНрдкреЗрд▓рд┐рдВрдЧ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдлреЗрд░рдмрджрд▓ рдЬрдЧрд╣-рдЬрдЧрд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдлреЗрд░рдмрджрд▓ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╣ permuted рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд permuted(arr, out=arr) рдЕрд░реНрде permute(arr) , рд╕рд┐рд╡рд╛рдп - рдлреЗрд░рдмрджрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд - рдпрд╣ ndarray рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдирдП рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП permutation рдХреЗ рдкрдХреНрд╖ рдореЗрдВ shuffled рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдкрд╕рдВрдж рд╣реИ!

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реВрдВ (рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреАрдЖрд░ https://github.com/numpy/numpy/pull/15121 рдкрд░)ред

рд╡рд╛рдкрд╕ рдЬрдм рдореИрдВрдиреЗ рдореВрд▓ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛, рдФрд░ рд╡рд░реНрддрдорд╛рди shuffle рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдпрд╣ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ axis рддрд░реНрдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ shuffle рдХрд╛ axis рддрд░реНрдХ sort рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред sort рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рднреА рджреЗрдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрди-рдкреНрд▓реЗрд╕ рдСрдкрд░реЗрд╢рди рдмрдирд╛рдо рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рдлрд╝рдВрдХреНрд╢рди numpy.sort() рдПрдХ рд╕рд░рдгреА-рдЬреИрд╕реЗ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХреНрд░рдордмрджреНрдз рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджреЗрддрд╛ рд╣реИред рдЗрди-рдкреНрд▓реЗрд╕ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ ndarray sort() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореМрдЬреВрджрд╛ ndarray рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЗрди-рдкреНрд▓реЗрд╕ рдСрдкрд░реЗрд╢рди рд╕реНрдкрд╖реНрдЯ рд╣реИред Gh-15121 рдореЗрдВ, рдЗрди-рдкреНрд▓реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ рдЬреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЗрд╕рдХреЗ рддрд░реНрдХ рдХреЛ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ, рдПрдХ ndarray np.array рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрди рдЗрдирдкреБрдЯ рдХреЛ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо [(1, 2, 3, 4), (5, 6, 7, 8)] рдЗрди-рдкреНрд▓реЗрд╕ рдлреЗрд░рдмрджрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ )

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ sort рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╢рдлрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдПрдХ ndarray рд╡рд┐рдзрд┐ рдЬреЛ рдЬрдЧрд╣ рдореЗрдВ рд╢рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдРрд╕рд╛ рдЬреЛрдбрд╝рдирд╛ ndarray рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдФрд░ рдПрдХ ndarray _method_ рдЬреЛ рдЬрдЧрд╣-рдЬрдЧрд╣ рдлреЗрд░рдмрджрд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ ndarray рд╡рд░реНрдЧ рдореЗрдВ рдРрд╕реА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд╕рд┐рдВрдЧрд▓рдЯрди рдЬрдирд░реЗрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

@bashtage рдиреЗ рд▓рд┐рдЦрд╛

рдореБрдЭреЗ рдпрд╣рд╛рдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд╛рд╣рд░реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП permutation (рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди shuffled рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рд▓рдЧрддрд╛ рд╣реИред [рдпрджрд┐ рдпрд╣] shuffle-shuffled , permute-permuted рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЙрдЪрд┐рдд рджрд┐рдЦрдиреЗ рд▓рдЧрддреА рд╣реИрдВред рдХреЛрдИ рднреА shuffled рдЬреЛрдбрд╝рдиреЗ рдФрд░ permutation рдкрд░ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЗрдЪреНрдЫреБрдХ рд╣реИ?

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ 2014 рдореЗрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдЪрд░реНрдЪрд╛ (рдкреНрд░рдХрд╛рд░) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реБрдИ рдереАред рдпрд╣рд╛рдВ рдирдерд╛рдирд┐рдПрд▓ рдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://mail.python.org/pipermail/numpy-discussion/2014-October/071364.html

рдЙрд╕рдХрд╛ scramble[d] рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ https://github.com/numpy/numpy/pull/15121 рдореЗрдВ randomly_permute[d] рд╣реИ ред

рдпрджрд┐ рд╣рдо shuffled рдХреЛ permutation рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдирдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ permute[d] , рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рд╣реИ

meaning    operate
of axis    in-place   return copy
-------    ---------  -----------
"over"     shuffle    shuffled
"along"    permute    permuted

рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрдЧрддрд┐ рд╣реИред рдПрдкреАрдЖрдИ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдореЗрдВ out рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИред

https://github.com/numpy/numpy/pull/15121 рдореЗрдВ , рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЕрд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рдирд╛рдо permuted_with_out рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ out рддрд░реНрдХ рдХреИрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрджрд┐ рд╣рдо out рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ shuffle рдФрд░ permutation , рддреЛ рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ

meaning    operate
of axis    in-place                           return copy
-------    ---------------------------------  --------------------
"over"     shuffle(x, axis)                   permutation(x, axis)
"along"    permuted_with_out(x, axis, out=x)  permuted_with_out(x, axis)

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ out рдкреИрд░рд╛рдореАрдЯрд░ рдкреЗрд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ permutation рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╣рдо рдЕрднреА рднреА permutation рдХреЛ shuffled рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЪреВрдВрдХрд┐ рдирдИ shuffled рд╡рд┐рдзрд┐ рдореЗрдВ out рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЬреЛ рдЗрди-рдкреНрд▓реЗрд╕ рдСрдкрд░реЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, shuffle рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ permutation рдХреЗ рд╕рд╛рде рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░, shuffled рдФрд░ permuted рдХреЗ "рдЕрдЪреНрдЫреЗ" рдирд╛рдореЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рддрд╛рд▓рд┐рдХрд╛ рд╣реИ

    meaning    operate
    of axis    in-place                  return copy
    -------    ------------------------  -----------------
    "over"     shuffled(x, axis, out=x)  shuffled(x, axis)
    "along"    permuted(x, axis, out=x)  permuted(x, axis)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ out рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рдЗрди-рдкреНрд▓реЗрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╕рд░рдгреА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рд░рдгреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдмрдЪрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ shuffle/shuffled/permute/permuted рдПрдкреАрдЖрдИ рдкрд░ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдн рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕ рдПрдкреАрдЖрдИ рдХрд╛ рдиреБрдХрд╕рд╛рди рджреЛ рддрд░реАрдХреЛрдВ, shuffle рдФрд░ permutation рдХрд╛ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╣реИред рддрддреНрдХрд╛рд▓ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП "рдирд░рдо" рдмрд╣рд┐рд╖реНрдХрд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛рдиреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЬреЛрд░ рджреЗрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рди рдЬреЛрдбрд╝реЗрдВ)ред

рдпрд╣ рдмрджрд▓рд╛рд╡ рдХреЗ рджреЛ рдореБрдЦреНрдп рджрд╛рд╡реЗрджрд╛рд░реЛрдВ рдХрд╛ рдореЗрд░рд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ shuffle/shuffled/permute/permuted рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдпрд╛ shuffled/permuted рд╡рд╛рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг out рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╣реИред рдпрджрд┐, 2014 рдореЗрдВ рд╡рд╛рдкрд╕, рдХрд┐рд╕реА рдиреЗ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдИ рдереА, рдЬрд┐рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рддреЛ рд╢рд╛рдпрдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА shuffle/shuffled/permute/permuted рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди out рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ (рдЫреЛрдЯреЗ? рдорд╣рддреНрд╡рд╣реАрди?) рдлрд╛рдпрджреЗ рд╣реИрдВ: рдЪрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рджреЛ рдирд╛рдо, рдФрд░ out рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрдо рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд╕рд╛рде рдЦреБрд╢ рд░рд╣реВрдВрдЧрд╛ред

рд▓реЛрдЧ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рддреАрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ 1, 3, рдФрд░ 2 рд╕реЗ рдХрд╛рдлреА рдкреАрдЫреЗ рд░реИрдВрдХ рджреВрдВрдЧрд╛ред 2 рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдЬреЛ рдХрд╛рдлреА рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рдЪреАрдЬреЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡реЗ рднреНрд░рдо рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕реНрд░реЛрдд рдХреА рддрд░рд╣ рд▓рдЧрддреЗ рд╣реИрдВред рдореЗрд░реА рдирд┐рдЬреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╣реИ; рдореИрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдирд╣реАрдВ рд╕рд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВ рдпрд╣ рднреА рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ 3 x = shuffled(x, axis, out=x) рднреА return x рдмрдЬрд╛рдп return None , рддрд╛рдХрд┐ рдЬрдм рдпрд╣ рдЬрдЧрд╣ рдкрд░ рд╣реЛ, рддреЛ рдХреЛрдИ x рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ 3 рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИред

рдореЗрд░реА рдирд┐рдЬреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╣реИ; рдореИрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди _is_ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдлреЗрд░рдмрджрд▓ рдХрд░рдирд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд╣реИ рдирд╛?

рд▓реЗрдХрд┐рди _is_ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдлреЗрд░рдмрджрд▓ рдХрд░рдирд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд╣реИ рдирд╛?

рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдЗрди-рдкреНрд▓реЗрд╕ рдПрдХ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рд╡рд┐рдХрд▓реНрдк рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛, рдФрд░ рд╢рд╛рдпрдж рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдгред

рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм f(x, out=x) рд╣рдореЗрд╢рд╛ рдереЛрдбрд╝рд╛ рдЬрд╛рджреБрдИ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдХрднреА-рдХрднреА рдХреБрдЫ рдЬрд▓реНрджреА рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред f(x, inplace=True), рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ (рдПрдХ рдкреБрд░рд╛рдиреЗ рдкрд╛рдВрдбрд╛ рдкреИрдЯрд░реНрди рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕реЗ NumPy рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ out=... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЗрди-рдкреНрд▓реЗрд╕ рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ)ред рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рдкрд╕рдВрдж рд╣реИ рдЬрд┐рд╕реЗ NumPy рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...

рдореИрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЬрд╛рджреБрдИ рдорд╛рдирддрд╛ рд╣реВрдВ рдФрд░ inplace= kwarg рдХрдо рдЬрд╛рджреБрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рднреА? рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рдХрдо рдЬрд╛рджреБрдИ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди-рдкреНрд▓реЗрд╕ рд╢рдлрд▓ рдпрд╣рд╛рдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдореВрд▓ рдореЗрдВ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рд╡рд░рдг рдЕрдзрд┐рдХ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ рдпрд╣ out= рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдЧрднрдЧ рдПрдХ рдкреНрд░рддрд┐ + рд╕рдВрдмрдВрдзрд┐рдд рдореЗрдореЛрд░реА рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреЛ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ ufuncs рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред (рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ, ufuncs рдХреЗ рд▓рд┐рдП рднреА out=input рд╢рд╛рдпрдж рдХреБрдЫ рдЬрд╛рджреБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рджреВ рдФрд░ рдПрдХ рдЬреНрдЮрд╛рдд рдкреИрдЯрд░реНрди - рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред)

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рдХрдо рддреЗрдЬ рд╣реИ, np.shuffled(x, out=x) рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИред рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рд╣рд┐рд╕реНрд╕рд╛ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

out рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкреНрд░рд╢реНрди: рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди numpy.sort рдФрд░ ndarray.sort рдереЗ, рдФрд░ рд╣рдо рдЕрдм рдПрдХ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд░рд╣реЗ рдереЗ, рддреЛ рдХреНрдпрд╛ рдкрд╕рдВрджреАрджрд╛ рдПрдкреАрдЖрдИ numpy.sorted(a, axis=-1, kind=None, order=None, out=None) (рдЗрди-рдкреНрд▓реЗрд╕ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП ndarray.sort рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)?

ndarray.sort рдХреЛ list.sort рдмрд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рд╕рдордЭрджрд╛рд░ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ np.sort рдкрдХреНрд╖ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп np.sorted(..., out=...) рдкрдХреНрд╖ рдореЗрдВ рд╣реЛрддрд╛ред

рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ np.sort рдХрд╛ рдирд╛рдо np.sorted np.sort рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдмрд┐рд▓реНрдХреБрд▓ рдЕрдЬрдЧрд░ рдХреЗ sorted() рддрд░рд╣)ред рдЪреВрдВрдХрд┐ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддреАред

рдореБрдЭреЗ " ndarray.sort рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ (рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡реНрдпрд╡рд╣рд╛рд░) рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдХреЗрд╡рд▓ рддрднреА рд╣реИ рдЬрдм рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди-рдкреНрд▓реЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдиреЗ рдореЗрдВ рднреА рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИред рдиреЙрдЯ-рдЗрди-рдкреНрд▓реЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ out= рдкреИрдЯрд░реНрди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ "ndarray.sort рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБред рдореБрдЭреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ (рдпрд╛ рдЗрд╕рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╡реНрдпрд╡рд╣рд╛рд░) рдореЗрдВ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рд╡рд╣ рдореЗрд░реЗ рдПрдкреАрдЖрдИ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдпреЛрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реИред рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐, рдЕрдЧрд░ рд╣рдо рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкрд░рд┐рд╕рд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдПрдкреАрдЖрдИ рдХреЗ рдорд┐рд▓рд╛рди рд╕реЗ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реИрдВ - рддреЛ рдЫрдБрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рдПрдкреАрдЖрдИ numpy.sorted(..., out=...) , рдФрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓, рдЗрддрдирд╛ рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╣реАрдВ: рдпрджрд┐ out рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рддреЛ, рдкреВрд░реЗ NumPy рдореЗрдВ рдПрдкреАрдЖрдИ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрдВрддрддрдГ out рдХреЛ numpy.sort рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП, numpy.partition , numpy.argsort , рдФрд░, рдареАрдХ рд╣реИ, рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рд╣реИ?

рд╣рд╛рдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ ufuncs рдХреЗ рд╕рдорд╛рди рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд╕рд╛рде out= kwarg рдЬреЛрдбрд╝рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА NumPy API рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред out рддрд░реНрдХ рдХреА рдХреЛрдИ рдХрдореА рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╡реГрджреНрдзрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ)ред

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

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

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

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

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

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

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