axis
åŒæ°ãåãå
¥ãã1次å
ã¹ã©ã€ã¹ãç¬ç«ããŠã·ã£ããã«ããnumpy.random.shuffle
代æ¿æ段ããããšäŸ¿å©ã§ãã ãããç§ãdisarrange
ãšåŒã¶å®è£
ã§ãã ããã¯æ©èœããŸãããããå¹ççãªCã®å®è£
ããããšäŸ¿å©ã§ãã
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]])
ãã®ãªã¯ãšã¹ãã¯ãstackoverflowã«é¢ãããã®è³ªåã«ãã£ãŠåæ©ä»ããããŸããïŒ http ïŒ
ãªãããã代æ¿æ段ã§ããå¿
èŠãããã®ãââããããªã-ãªãåã«è¿œå ããªãã®ã
ã·ã£ããã«ãã軞åŒæ°ïŒ np.sumã®ããã«ãããã©ã«ãã¯Noneã§ãã
21:36æåã2014幎10æ11æ¥ã«ã¯ããŠã©ãŒã¬ã³Weckesser [email protected]
æžããŸããïŒ
numpy.random.shuffleã«ä»£ãããã®ããããšããã§ããã
軞åŒæ°ãåãå ¥ããããã¯ç¬ç«ããŠã·ã£ããã«ããŸã
äžæ¬¡å ã¹ã©ã€ã¹ã ãããç§ãdisarrangeãšåŒã¶å®è£ ã§ãã
ããã¯æ©èœããŸãããããå¹ççãªCã®å®è£ ããããšäŸ¿å©ã§ããdef disarrangeïŒaãaxis = -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]ã§ïŒa
ã¢ãŠã[157]ïŒ
arrayïŒ[[0ã1ã2ã3ã4]ã
[5ã6ã7ã8ã9]ã
[10ã11ã12ã13ã14]ã
[15ã16ã17ã18ã19]]ïŒ[158]ã®å ŽåïŒdisarrangeïŒaãaxis = -1ïŒ
[159]ã§ïŒ
ã¢ãŠã[159]ïŒ
arrayïŒ[[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]ã®å ŽåïŒdisarrangeïŒaãaxis = 0ïŒ
[162]ã§ïŒa
ã¢ãŠã[162]ïŒ
arrayïŒ[[5ã11ã7ã13ã14]ã
[0ã6ã2ã3ã4]ã
[10ã1ã17ã18ã19]ã
[15ã16ã12ã8ã9]]ïŒãã®ãªã¯ãšã¹ãã¯ãstackoverflowã«é¢ãããã®è³ªåã«ãã£ãŠåæ©ä»ããããŸããïŒ
http://stackoverflow.com/questions/26310346/quickly-calculate-randomized-3d-numpy-array-from-2d-numpy-array/â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/numpy/numpy/issues/5173ã
ããµããšã«ã»Jã»ã¹ãã¹
ãã¹ãã¯ç 究å¡-æ
å ±åŠ-ãšãã£ã³ãã©å€§åŠ
http://vorpus.org
shuffle
ã®çŸåšã®åäœã¯ãå®éã«ã¯axis=None
ãŸãã åŒæ°ã1次å
ã·ãŒã±ã³ã¹ãšããŠæ±ããŸãã
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
é©åãªåŒæ°ãè¿œå ããŠããã®åäœãå¶åŸ¡ãã代æ¿ã·ã£ããã«ãå®è£
ããã°åé¡ãããŸãããããã®APIã®ææ¡ã¯ãããŸããã
ããããã2ã€ã®åŒæ°ãshuffle
è¿œå ã§ããŸãïŒ axis
ãšindependent
ïŒãŸãã¯ãããã®ç·ã«æ²¿ã£ããã®ïŒã æ°ãã眲åã¯æ¬¡ã®ããã«ãªããŸãã
def shuffle(a, independent=False, axis=0)
independent
ãFalseã®å ŽåãçŸåšã®shuffle
ãŸãã Trueã®å Žåã disarrange
ããã«åäœããŸãã
ãããããŒããç§ã¯ãããé¡äŒŒã®ãã®ãšããäžè²«ããŠãããšæã£ã
sortã®ãããªé¢æ°:-(ããã®çš®ã®å Žåã¯ãã£ãšããã§ããã
ã¹ã©ã€ã¹ã®ã·ã£ããã«ã¯ãidx = arangeïŒ...ïŒ;ã®ããã«èšè¿°ãããŸããã shuffleïŒidxïŒ;
multi_dim_array [idxã...]; ãããã誰ãç§ã«å°ããŸããã§ãã:-)
äžèŽããåŒã³åºãèŠçŽãããããŒãžã§ã³ã®ã·ã£ããã«ã§+1ããŠããŸã
np.sortã§ãããååãšããŠãªã¹ãã§ç¢ºèªããå¿
èŠããããŸãã 圌ãã¯æã£ãŠãããããããŸãã
æé«ã®ååã®ãããªéèŠãªåé¡ã«é¢ããææ¡ã:-)
ïŒãã¶ããã¹ã¯ã©ã³ãã«ãïŒïŒ
2014幎10æ11æ¥åææ¥ååŸ10æ31åãWarren Weckesser < [email protected]
æžããŸããïŒ
ã·ã£ããã«ã®çŸåšã®åäœã¯ãå®éã«ã¯axis = Noneã®ããã§ã¯ãããŸããã ããã¯æ±ããŸã
äžæ¬¡å ã·ãŒã±ã³ã¹ãšããŠã®ãã®è°è«ã[181]ã®å ŽåïŒa = np.arangeïŒ20ïŒ.reshapeïŒ4,5ïŒ
[182]ã®å ŽåïŒnp.random.shuffleïŒaïŒ
[183]ââã§ïŒ
ã¢ãŠã[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次å é åã®å ŽåãaTãã·ã£ããã«ããŠaxis = 1ããšãã¥ã¬ãŒãã§ããŸãããããã¯ã§ããŸããã
ç¬ç«ããã·ã£ããã«ãååŸããŸãã[184]ã®å ŽåïŒa = np.arangeïŒ20ïŒ.reshapeïŒ4,5ïŒ
[185]ã®å ŽåïŒnp.random.shuffleïŒaTïŒ
[186]ã§ïŒ
ã¢ãŠã[186]ïŒ
arrayïŒ[[4ã1ã0ã3ã2]ã
[9ã6ã5ã8ã7]ã
[14ã11ã10ã13ã12]ã
[19ã16ã15ã18ã17]]ïŒæ··ä¹±ãããŠãç§ã¯axis = Noneã次ã®ããã«æ¯ãèãããšãæåŸ ããŸã
np.random.shuffleïŒa.flatïŒãè¿œå ããŠä»£æ¿ã·ã£ããã«ãå®è£ ããã°åé¡ãããŸãã
ãããã©ã®ããã«æ¯ãèãããå¶åŸ¡ããã·ã£ããã«ããããã®é©åãªè°è«ããããç§ã¯ããŸãã
ãã®APIã®ææ¡ããããŸããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/numpy/numpy/issues/5173#issuecomment-58765220 ã
ããµããšã«ã»Jã»ã¹ãã¹
ãã¹ãã¯ç 究å¡-æ
å ±åŠ-ãšãã£ã³ãã©å€§åŠ
http://vorpus.org
ãããæãŸããæ¯ãèããsort
ã¢ããã°ãšããŠèª¬æããã®ã¯è¯ãèãã§ãã
ãããããŒããç§ã¯ããããœãŒãã®ãããªé¡äŒŒã®æ©èœãšããäžè²«ããŠãããšæããŸãã
ç§ãé©ããŸãããstackoverflowã®è³ªåã«å¯Ÿããã³ã¡ã³ãã«åºã¥ããŠãå°ãªããšã2人ã®çµéšè±å¯ãªnumpyãŠãŒã¶ãŒãé©ããŸããã ã¡ãŒãªã³ã°ãªã¹ãã§è©±ãåããå§ããŸãã
å¹³åçãªãŠãŒã¶ãŒãçŸåšãããééããŠããã®ãªããããã¯äŸ¡å€ããããšæããŸã
ä»ã®ãªãã·ã§ã³ã«ã€ããŠèšåãã-ã©ã¡ãããéžæããããã®åŒæ°ãè¿œå ããããšã_å¯èœ_
ããã©ã«ãã§çŸåšã®åäœãéå§ãã2ã€ã®åäœã
ãããŠããæç¹ã§ãFutureWarningãšå«ã³å£°ãäžããåŸãããã©ã«ãã«åãæ¿ããŸã
人ã
ã«èŠåããããã«ã ããããããã¯éã移è¡ã§ã...
2014幎10æ11æ¥åææ¥ååŸ11æãWarren Weckesser < [email protected]
æžããŸããïŒ
ãããããŒããç§ã¯ãããé¡äŒŒã®ãã®ãšããäžè²«ããŠãããšæã£ã
ãœãŒãã®ãããªæ©èœç§ãé©ããŸããããããŠstackoverflowã«é¢ããã³ã¡ã³ãã«åºã¥ããŠ
質åãå°ãªããšãä»ã®2人ã®çµéšè±å¯ãªnumpyãŠãŒã¶ãŒã¯é©ããã ç æ°
ã¡ãŒãªã³ã°ãªã¹ãã§ãã£ã¹ã«ãã·ã§ã³ãéå§ããŸããâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/numpy/numpy/issues/5173#issuecomment-58766099 ã
ããµããšã«ã»Jã»ã¹ãã¹
ãã¹ãã¯ç 究å¡-æ
å ±åŠ-ãšãã£ã³ãã©å€§åŠ
http://vorpus.org
圌ãã¯ãŸããæé«ã®ååã®ãããªéèŠãªåé¡ã«ã€ããŠã®ææ¡ãæã£ãŠãããããããŸããã
Sueãšããååã®é¢æ°ãå¿ èŠã§ãã
sortïŒaxis = NïŒãšåæ§ã«ããã®æ©èœãååšãããšäºæ³ããŠããã®ã§ããã®æ©èœã+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次å ã·ãŒã±ã³ã¹ãšããŠæ±ããŸãã æ°ããaxisåŒæ°ã䜿çšãããšããŠãŒã¶ãŒã¯ã©ã®è»žã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 along (individual) axis
代ããã«ãçŸåšã®ã·ã£ããã«ããžãã¯ã§ããshuffle the subarrays along this axis
ã䜿çšããŸããããã¯ãããããäœãèµ·ããã¹ãããšããããšã§ãã ã€ãŸããã沿ã£ãŠãã§ã¯ãªããäžãã«ããŸãã¯æå®ããã軞å
ã§ã·ã£ããã«ããŸãã
ãã ããã»ãšãã©ã®å Žåã axis
ã¯NumPyã®è»žã«æ²¿ã£ããã®ãæå³apply_over_axes
ãªã©ãäŸå€ã¯ã»ãšãã©ãããŸããã ã ããç§ã¯ãšãŠã倧èã«ãªããè°è«ã®ååãover_axis=0
å€æŽããŠããæ··ä¹±ãé¿ããããã«è¯ããšäž»åŒµããŸãïŒ ç¹ã«ã誀ã£ãã·ã£ããã«ã«æ°ä»ãã®ãéåžžã«é£ããä¹±æ°ã®å Žåã
äžèšã®githubçžäºåç §ã«èšèŒãããŠããããã«ã httpsïŒ//github.com/numpy/numpy/pull/15121ã«é²è¡äžã®PRããã
@WarrenWeckesserã¯ãã£ãããã§ãããç§ãå人çã«ãã£ãšç·æ¥ã«æžå¿µããŠããã®ã¯ãæ°ããAPIã§ããããŠæè¿ã§ã¯ãéå°ãªæå³ãæ¡åŒµããããšã§ãã
ãããŠãå°ãªããšãaxis
åŒæ°ã®ååãå€æŽãããªã©ããŠããããéšåçã«åŒãæ»ãã¹ãã§ã¯ãªãããšæããŸãã ãŸãã¯ãä»ã®ãšãããå€æ¬¡å
ã®åäœãå®å
šã«åãé€ãããšããã§ããŸã...
ç§ã¯ãããèŠéãããã以åã¯æåŸãŸã§èããŠããªãã£ãã®ã§å°ãã€ã©ã€ã©ããŠããã®ã§ãããããä»ã¯éå°åå¿ããŠããã ãã§ã...ããããæ£çŽãªãšãããçŸåšã®ããžãã¯ã¯éåžžã«å±éºã ãšæããŸãã ãããæåŸ
ã«æ²¿ã£ãæå³ãæäŸããªãããšã¯èŠéããã¡ã§ãã ãããŠãããã¯np.sort
䜿çšããæå³ã§ã¯ãããŸããã
@seberg ããã®åé¡ãçªããŠãããŠããããšãã APIã«ã€ããŠã¯ãŸã åæã«éããå¿
èŠããããšæããŸãã ããã§ã¯ãéå»ã®ã¢ã€ãã¢ã®æŠèŠãç°¡åã«èª¬æããŸãã axis
2ã€ã®è§£éã«ã¯ããoverããšãalongãã䜿çšãããšããããªãã®æ
£ç¿ã«åŸããŸãã ãã®æç¹ã§ã shuffle
ãšpermutation
ã®axis
ã®æ¢åã®ã沿ã£ãã解éãå®å
šã«å
ã«æ»ãããšãã§ãããã©ããã¯ããããŸããããå€ãã®äººãã§ããã°å¬ããã§ãã :)
æ°å¹Žåã®ã¡ãŒãªã³ã°ãªã¹ãã®è°è«ã®çµããã«ã解決çã¯shuffle
ãšpermutation
ã®APIãå€æŽããã代ããã«è»žã«æ²¿ã£ãŠã©ã³ãã åããã2ã€ã®æ°ããã¡ãœãããå°å
¥ããããšã ãšæããŸããããã以äžã®ä»£ããã«ã 1ã€ã®ã¡ãœããã¯ã€ã³ãã¬ãŒã¹ã§æ©èœãããã1ã€ã®ã¡ãœããã¯ã³ããŒãè¿ããŸãã åœæã®ç§ã®å¥œã¿ã¯permute
ãšpermuted
ãšããååã§ãããããããã®ååã«ã¯ããã€ãã®å察æèŠããããŸããã æšå¹Ž12æã®PRã§ãç§ã¯ããããrandomly_permute
ãšrandomly_permuted
ãšåŒã³ãŸãããããããã®ååã¯ãã¬ãŒã¹ãã«ããŒãšèŠãªãå¿
èŠããããŸãã ãããã®ååã決å®ããåã«ã2ã€ã®æ°ããé¢æ°ãè¿œå ããããšãæ£ããã¢ãããŒãã§ãããã©ãããå€æããå¿
èŠããããŸãã ãã以éãç°¡æœã«ããããã«ãææ¡ãããæ°ããã¡ãœãããpermute
ããã³permuted
ãšåŒã³ãŸãã
æ°ããé¢æ°ã䜿çšãããšã次ã®é¢é£ããGenerator
ã¡ãœãããäœæãããŸãã
meaning operate return
of axis in-place copy
------- -------- -----------
"over" shuffle permutation
"along" permute permuted
ïŒè»žã®ãäžãã§åäœããã¡ãœããã shuffle
ããã³permutation
ããã§ã«ååšããŸããïŒ
2ã€ã®æ°ããã¡ãœããã®ä»£ããã«ãã€ã³ãã¬ãŒã¹ãšã³ããŒã®åäœãå¶åŸ¡ãããã©ã¡ãŒã¿ãŒãæã€1ã€ã ãã䜿çšããããšãææ¡ãããŠããŸãã ããã«ã¯2ã€ã®ææ¡ããããŸãã
ïŒaïŒ out
ãã©ã¡ãŒã¿ãŒãè¿œå ããŸãã ã€ã³ãã¬ãŒã¹ã§äœæ¥ããã«ã¯ãå
¥åé
åãout
ãšããŠæž¡ããŸãã out
ãæäŸãããŠããªãå Žåã¯ãã·ã£ããã«ãããã³ããŒãè¿ããŸãã
ïŒbïŒ copy
ãinplace
ãªã©ãç®çã®åäœãæå®ããããŒã«ãã©ã°ãè¿œå ããŸãã
æ°ããã¡ãœãããäœæããäž»ãªæ¹æ³ã¯ãæ¢åã®ã¡ãœããã«æ°ãããã©ã¡ãŒã¿ãŒãè¿œå ããŠã axis
解éæ¹æ³ãå€æŽããããšã§ãã ãããããªã¹ãããåã«ãRobert Kernãã¡ãŒãªã³ã°ãªã¹ãã¹ã¬ããã§ãè¿œå ã®åŒæ°ãå®éã«ã©ã®ããã«äœ¿çšãããå¯èœæ§ããããã«ã€ããŠã³ã¡ã³ããç¹°ãè¿ããŸãïŒããã§ã¯ä»¥äžã«ç€ºãindependent
ãã©ã¡ãŒã¿ãŒãåç
§ïŒã
ç§ã«ã¯ã代ããã«2ã€ã®æ¹æ³ãããã®ã¯å®å šã«æ£åœãªçç±ã®ããã§ãã
1ã æåéãã®TrueãŸãã¯Falseã䜿çšããªãã®ã¯ãã€ãæ³åã§ããŸãã
ãã®ãããå®éã«ã¯2ã€ã®ç°ãªãæ¹æ³ã§ããå¿ èŠããããŸãã
ïŒç·šéã®äœè«ïŒå¿
ç¶çã«ãã®ãããªè°è«ã§ã¯ãåå空éïŒãã®å Žåã¯Generator
åå空éïŒã®æé·ã®åé¡ãçºçããŸãïŒãåå空éã®æ±æããšåŒã°ããããšããããŸãïŒãç©äºãåãã§ããã°ãåå空éã¯å°ããæ¹ãè¯ãã§ãããã ããã»ãšãã©ã®APIèšèšã®æ±ºå®ãšåæ§ã«ãèæ
®ãã¹ããã¬ãŒããªãããããŸããåå空éãå°ããããŠãæ±ãã«ãããŸãã¯é床ã«è€éãªAPIã䜿çšããŠã¡ãœãããäœæãããšãåã¡ãŸãããïŒ
ããã¯èšã£ãŠããææ¡ãããŠããshuffle
ã®æ¢åã®çœ²åãžã®2ã€ã®è¿œå ããããŸãã
ïŒ1ïŒ shuffle(x, axis=0, independent=False)
ïŒããŒã«ãã©ã°independent
ã¯ã axis
解éæ¹æ³ã決å®ããŸãïŒFalse-> "over"ãTrue-> "along"ã ïŒããããindependent
ãããè¯ãååããããŸããïŒ
ïŒ2ïŒ shuffle(x, axis=0, iaxis=???)
ïŒ2çªç®ã®åŒæ°iaxis
ã¯ãã沿ã£ããåäœã®è»žã瀺ããŸãã ïŒãããaxis
ãšã©ã®ããã«çžäºäœçšãããã¯ãæ確ãªæå®ãå¿
èŠã§ããããããã iaxis
å€ãæå®ãããšã axis
ãç¡èŠãããŸããïŒ
æãã€ããããŸããŸãªAPIã®ã¢ã€ãã¢ããã¹ãŠã«ããŒãããšæããŸãã 誰ããä»ã®äººãç¥ã£ãŠãããªããç§ãã¡ã«ç¥ãããŠãã ããã
ããã§APIãå¢ãããŠæºè¶³ããŠããŸãã ããã«å察ããçç±ããããããããã©ããã¯ããããŸããã
kwarg
ã䜿çšããããšã¯ãéåžžã®ãã¿ãŒã³ã§ã¯ãªãããã§ããRoberKernã¯å®å
šã«ããã«ãã£ããšæããŸããããã§èµ·ãã£ãŠããããšã¯ã shuffle
ãšpermutation
ïŒãããŠããããchoice
ïŒãã€ã³ããã¯ã¹äœææäœïŒã€ãŸãtake
ïŒãšæ¯èŒã§ããããšã ãšæããŸãã axis
ãåãæå³ã䜿çšããŸãã ãããŠããããç§ã«ãšã£ãŠå°ãå¥åŠã«æããçç±ã¯ããããããã®å®çŸ©ã®æ¬ ç¹ã§ãããéåžžã®é
åèªèé¢æ°ãšã¯ç°ãªããNDã«äžè¬åããããšã¯ã§ããŸããïŒ arr[..., index]
ã䜿çšãããšãã€ã³ããã¯ã¹ä»ãèªäœã§ãäžè¬åã§ããŸããããã ãã§ããé
åã®ã¹ã¿ãã¯ã«äžè¬åããåã
ã®é
åã«å¯ŸããŠä»¥åãšåãæäœãå®è¡ããŸãïŒã
ããšã泚ætake_along_axis
ã®ããã®æå³"ã«æ²¿ã£ãŠ" NDãäžè¬åæäŸtake
ïŒããã¯è€éãªããã§ãã£ãŠãïŒæ£ããNDã«ã apply_along_axis
ãšapply_over_axis
ã¯ããoverããæ£ããåèªãã©ããã¯ããããŸãããããoverããååŸããå Žæã§ã...
ããã§ã¯ã permutation
ïŒç°¡åã«å€æŽããããšã¯ã§ããŸãããã shuffled
å¿
èŠããããŸãïŒãå®éã®å€ãå€ã§ããããšãããããŸãã shuffle
- shuffled
ã permute
- permuted
ã®ã§ãç©äºã¯ããªãæ確ã§åççã«èŠãå§ãããšæããŸãã shuffled
ãè¿œå ããŠã permutation
éæšå¥šãéå§ããããšãããšããªã人permutation
ã¯ã itertools.permutations
ãFWIWãšã®åäœãããŸãäžè²«ããŠããŸããã
permutation
ã permute
ã permuted
ã¯ãåäœãç°ãªãé¡äŒŒããååã®çŽããããããªãã«ã ãšæããŸãã ãããåé¿ããããšã¯ïŒããããé·æçã«ã¯ïŒè¯ãã§ãããã
æ¢åã®APIãæ¡åŒµããã®ã¯ç°¡åãªããã§ãããåäœãæ ¹æ¬çã«å€ããããŒã¯ãŒãããªããšãã@rkernã®ãã€ã³ãã
ã€ã³ãã¬ãŒã¹ãšã€ã³ãã¬ãŒã¹ã§ã¯ãªãå ŽåãNumPyã«ã¯ä»£æ¿ã®out=
ã¹ãã«ããããšæããŸãã ããããã·ã£ããã«ã¯ã€ã³ãã¬ãŒã¹ã§ããããã解決çã§ã¯ãªããã·ã£ããã«ããã®ã¯è¯ãããšã§ãã permuted
ïŒã€ãŸãã permuted(arr, out=arr)
ã¯permute(arr)
ãšåãæå³ã§ãããã·ã£ããã«ãšã¯ç°ãªãã ndarray
å€æãããŸãïŒã
ãããã«ãããæ°ããåå空éãã¯ãªãŒã³ã¢ããããããã«shuffled
ãåªå
ããŠã permutation
ãå»æ¢ããèšç»ã奜ãã§ãã
ãã®åé¡ïŒããã³é¢é£ããPRïŒhttps://github.com/numpy/numpy/pull/15121ïŒïŒã«æ»ããŸãã
å
ã®åé¡ãäœæããçŸåšã®shuffle
APIã§åé¡ã説æããããšãããšããåé¡ã説æãã1ã€ã®æ¹æ³ã¯ãã»ãšãã©ã®äººãaxis
åŒæ°ãæåŸ
ããããšã§ãããšææãããŸããã shuffle
ã®sort
ã®axis
åŒæ°ãšåãããã«åäœããŸãã sort
ãšã®é¡äŒŒæ§ã¯éåžžã«åªããŠãããããã€ã³ãã¬ãŒã¹æäœãšäžŠã¹æ¿ãã®ããã®ã³ããŒã®åé¡ãã©ã®ããã«åŠçãããã確èªããããšã圹ç«ã€å ŽåããããŸãã é¢æ°numpy.sort()
ã¯é
åã®ãããªåŒæ°ãåãå
¥ãããœãŒããããã³ããŒãè¿ããŸãã ã€ã³ãã¬ãŒã¹ãœãŒãã®å Žåã ndarray sort()
ã¡ãœããã䜿çšããŸãã ããã¯æ¢åã®ndarrayã®ã¡ãœããã§ãããããã€ã³ãã¬ãŒã¹æäœã¯æ確ã§ãã gh-15121ã§ã¯ãåŒæ°ãã©ã³ãã ã«äžŠã¹æ¿ããã€ã³ãã¬ãŒã¹é¢æ°ã®åŒæ°ã¯ãä»»æã®é
åã®ãããªãã®ã§ã¯ãªããndarrayã§ããå¿
èŠãnp.array
ãè¡ããã¹ãŠã®åœ¢ç¶æ€åºãå®è¡ããå¿
èŠããããäžå€ã§ããããšãå€æããå
¥åãæåŠããå¿
èŠããããŸãïŒããšãã°ã [(1, 2, 3, 4), (5, 6, 7, 8)]
ã€ã³ãã¬ãŒã¹ã·ã£ããã«ãå®è¡ããããšã¯ã§ããŸããïŒã ïŒã
ã·ã£ããã«ãããã³ããŒãè¿ãé¢æ°ãšãã€ã³ãã¬ãŒã¹ã§ã·ã£ããã«ããndarray
ã¡ãœããã䜿çšããŠã sort
APIãæ¬åœã«è€è£œã§ããã°çŽ æŽããããšæããŸããããã®ãããªãã®ãè¿œå ããããšã¯ãªããšæããŸãã ndarray
ã¯ã©ã¹ã®ã¡ãœããã¯ãåãå
¥ããããå¯èœæ§ããããŸãã
ãããŠããã®å Žã§ã·ã£ããã«ãã
ndarray
_method_ã§ããããã®ãããªã¡ãœãããndarray
ã¯ã©ã¹ã«è¿œå ããŠãåãå ¥ããããå¯èœæ§ã¯ãªããšæããŸãã
ã·ã³ã°ã«ãã³ãžã§ãã¬ãŒã¿ããªããã°ããããå®çŸããããšã¯äžå¯èœã ãšæããŸãã
@bashtageã¯æžãã
ããã§ã¯ã
permutation
ïŒç°¡åã«å€æŽããããšã¯ã§ããŸããããshuffled
å¿ èŠããããŸãïŒãå®éã®å€ãå€ã§ããããšãããããŸãã [ããããã]shuffle-shuffled
ãpermute-permuted
ã ã£ãããç©äºã¯ããªãæ確ã§åççã«èŠãå§ãããšæããŸããshuffled
ãè¿œå ããŠãpermutation
éæšå¥šãéå§ããããšãããšããªã人
ããã¯ãã¡ãŒãªã³ã°ãªã¹ãã®è°è«ïŒäžçš®ïŒã2014幎ã«åæãããã®ã§ããNathanielsã®ææ¡ãžã®ãªã³ã¯ã¯æ¬¡ã®ãšããã§ãïŒ https ïŒ
圌ã®scramble[d]
ã¯ã httpsïŒ//github.com/numpy/numpy/pull/15121ã§randomly_permute[d]
ãšåŒãã§ããŸãã
permutation
代ããã«shuffled
ãè¿œå ãã軞permute[d]
ã«æ²¿ã£ãŠåäœããæ°ããã¡ãœãããåŒã³åºããšãé¢é£ããé¢æ°ã®ããŒãã«ã¯æ¬¡ã®ããã«ãªããŸãã
meaning operate
of axis in-place return copy
------- --------- -----------
"over" shuffle shuffled
"along" permute permuted
äžè²«æ§ããããŸãã ãã®ããŒãžã§ã³ã®APIã§ã¯ãã©ã®ã¡ãœããã«ãout
ãã©ã¡ãŒã¿ãŒããããŸããã
https://github.com/numpy/numpy/pull/15121ã§ãæè¿å¥ã®ã¡ãœãããè¿œå ããŸããããã®ã¡ãœããã¯ã out
åŒæ°ãã©ã®ããã«ãªããã瀺ããäžæ Œå¥œã§æããã«äžæçãªååpermuted_with_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
APIã«å¯Ÿãããã®APIã®å©ç¹ã§ããããã®å©ç¹ãå®éã«ã©ãã»ã©éèŠã§ãããã¯ããããŸããã ãã®APIã®æ¬ ç¹ã¯ã shuffle
ãšpermutation
ã®2ã€ã®ã¡ãœãããå»æ¢ãããããšã§ãã ãããã¯ãåœé¢ã®åœ±é¿ã軜æžããããã«ããã°ããã®éããœããããªéæšå¥šã«ãªãå¯èœæ§ããããŸãïŒã€ãŸããããã¥ã¡ã³ãã§ã®äœ¿çšã匷調ããŸããããå®éã«ã¯éæšå¥šã®èŠåããã°ããè¿œå ããªãã§ãã ããïŒã
ããããå€æŽã®2ã€ã®äž»èŠãªåè£ã®èŠçŽã§ãã shuffle/shuffled/permute/permuted
ããŒãžã§ã³ããŸãã¯shuffled/permuted
ãšout
ãã©ã¡ãŒã¿ãŒãæã€ããŒãžã§ã³ããããŸãã 2014幎ã«ã誰ããè°è«ãããå€æŽãå®è£
ããããã«é£ã³èŸŒãã å Žåããããããã§ã«shuffle/shuffled/permute/permuted
ããŒãžã§ã³ããããŸãã ãã ãã out
ã䜿çšããããŒãžã§ã³ã«ã¯ãããã€ãã®ïŒå°ããïŒéèŠã§ã¯ãªãïŒïŒå©ç¹ããããŸãã4ã€ã§ã¯ãªã2ã€ã®ååã§ããã out
䜿çšãããšããŠãŒã¶ãŒãäžæå€æ°ãå°ãªãã§ããå¯èœæ§ããããŸãã ã©ã¡ããã§ããã£ãã§ãã
人ã ã¯ã©ãæããŸããïŒ
ããªãããªã¹ããã3ã€ã®ã·ããªãªã®ãã¡ãé çªã«1ã3ã2ããããªãåŸãã«ã©ã³ã¯ä»ãããŸãããŸã£ããç°ãªãããšãããŠãã2ã€ã®é åã¯ã倧ããªæ··ä¹±ã®åå ã®ããã§ãã ç§ã®å人çãªå¥œã¿ã¯ãæ©èœã«ã¢ã¯ã»ã¹ããããã«outã匷å¶çã«äœ¿çšããããšãé¿ããããšã§ãã ç§ã¯åžžã«ãããã€ãã®ã·ããªãªã§æå³ã®ããããã©ãŒãã³ã¹ã®éžæãšããŠèããŠããŸãã æ©èœã«ã¢ã¯ã»ã¹ããããã ãã«äœ¿ãåãããã«çåŸã«æãããã¯ãããŸããã ç§ã¯ãŸããã±ãŒã¹3ã«ããããšãåæãšããŸãx = shuffled(x, axis, out=x)
ããreturn x
ã§ã¯ãªãreturn None
ãæå®ã®äœçœ®ã«ãããšããããã1ãã§çµãããããããªããšx
3åç»å Žã
ç§ã®å人çãªå¥œã¿ã¯ãæ©èœã«ã¢ã¯ã»ã¹ããããã«outã匷å¶çã«äœ¿çšããããšãé¿ããããšã§ãã ç§ã¯åžžã«ãããã€ãã®ã·ããªãªã§æå³ã®ããããã©ãŒãã³ã¹ã®éžæãšããŠèããŠããŸãã
ãããããã®å Žã§ã·ã£ããã«ããããšã¯ããã©ãŒãã³ã¹ã®éžæã§ãããïŒ
ãããããã®å Žã§ã·ã£ããã«ããããšã¯ããã©ãŒãã³ã¹ã®éžæã§ãããïŒ
ã€ã³ãã¬ãŒã¹ã¯ãå©çšå¯èœãªå Žåãã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã®éžæã«ããªããŸãã ããããçŽããããããããããšã©ãŒãçºçãããããã®ã§ãã
ç§ã®å人çãªèŠè§£ã¯ãfïŒxãout = xïŒã¯ãäœãããã°ããéæããããã®éåžžã«éèªæãªæ¹æ³ãšããŠäœ¿çšãããããšããããããåžžã«å°ãéæ³ã®ããã«æãããšãã§ãã fïŒxãinplace = TrueïŒã¯ãä»ã«äœãèŠããªãã«ãããããããã¯ããã«æ確ã«èŠããŸãïŒã»ãšãã©åé€ãããå€ããã³ããã¿ãŒã³ã«å°ã䌌ãŠããŸãïŒã
æ¬åœã§ãããNumPyã§ã¯éåžžout=...
ã䜿çšããŠç¶ŽãããŠããããã«èŠããã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã®éžæã§ãïŒã€ã³ãã¬ãŒã¹æŒç®åãŸãã¯ã¡ãœããã䜿çšããŠããå Žåãé€ãïŒã ãããã¯ãçŸåšã»ãšãã©ã®å ŽåãNumPyãç©æ¥µçã«ç°¡åã«ããããšããªãã®ã¯ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã®éžæãããããŸãã...
ç§ã¯ãããå°ãéæ³ã§ãããšèªããŸãããããŠinplace=
kwargã¯ããã»ã©éæ³ã§ã¯ãªããããããŸããããæ¬åœã®åªå
é äœããªãã®ã§ããïŒ ãããŠããããããã»ã©éæ³ã§ã¯ãªããšæãããäž»ãªçç±ããã€ã³ãã¬ãŒã¹ã·ã£ããã«ãããã®ã¢ã«ãŽãªãºã ã®ã³ã¢ã«ããããšã§ãããã©ããã¯ããããŸããã ã¢ã«ãŽãªãºã ã®è©³çŽ°ã¯ã»ãšãã©ã®åŠçã«ãšã£ãŠããã»ã©éèŠã§ã¯ãªããæçµçã«out=
ã䜿çšãããšãã»ãŒ1ã€ã®ã³ããŒãšé¢é£ããã¡ã¢ãªåž¯åå¹
ãä¿è·ãããufuncsã«å¹æµããŸãã ïŒãŸããŸããufuncsã®å Žåãout=input
ã¯å€å°éæ³ã®ããã§ããããã®äžè¬çãªéæ³ãšæ¢ç¥ã®ãã¿ãŒã³âäžçŽãŠãŒã¶ãŒåãã§ããïŒ
np.shuffled(x, out=x)
ã¯ãæžãã®ãå°ãé¢åã§ãèªãã®ãããé
ããããããŸããããåäœãäœã§ãããã«ã€ããŠã¯éåžžã«æ確ã«èŠããŸãã èªæã§ã¯ãªãéšåã¯ãããã©ãŒãã³ã¹ãžã®åœ±é¿ã®ã¿ã®ããã«èŠããŸããããã¯ãäžçŽãŠãŒã¶ãŒãå¿é
ããå¿
èŠã®ããåé¡ã®ããã«æããŸãã
out
ã®äœ¿çšãæå±ããŠãã人ãžã®æ¶ç©ºã®è³ªåïŒæ¢åã®é¢æ°numpy.sort
ãšndarray.sort
ãçŸåšãœãŒãé¢æ°ãè¿œå ããŠããå Žåãæšå¥šãããAPIã¯numpy.sorted(a, axis=-1, kind=None, order=None, out=None)
ïŒã€ã³ãã¬ãŒã¹ãœãŒãçšã®ã¡ãœããndarray.sort
ãå®è£
ããå¿
èŠã¯ãããŸããïŒïŒ
ndarray.sort
ã¯list.sort
ã¢ãã«ã«ããŠãããããAPIã®éžæã¯ããããè³¢æã§ãã ããã¯èšã£ãŠããç§ã¯np.sort
ãååšããã代ããã«np.sorted(..., out=...)
ãæ¯æããŠããã§ãããã
ã¯ãã np.sort
ã¯np.sorted
ãšããååãä»ããå¿
èŠããããšæããŸãïŒçµå±ã®ãšãããPythonã®sorted()
åãã§ãïŒã ã¡ãœããã ããã€ã³ãã¬ãŒã¹åäœãæã£ãŠããã®ã§ãç§ã¯ããŸãå¿é
ããŠããŸããã
ãã¡ãœããndarray.sort
ãå®è£
ããå¿
èŠããªããã«ã€ããŠã¯ããããããŸããã ã¡ãœããïŒãŸãã¯ãã®ã€ã³ãã¬ãŒã¹ã®åäœïŒã«åé¡ã¯ãããŸããã ãã®æ¹æ³ã«ã€ããŠã®è³ªåã¯ã䟿å©ãªæ¹æ³ãç°¡åã«æäŸããããšãååã«éèŠã§ãããšç§ãã¡ãæãããã©ããã ãã§ãã
ã€ã³ãã¬ãŒã¹é¢æ°ããŒãžã§ã³ã䜿çšããããšã«ãåé¡ã¯ãªããšæããŸãã ã€ã³ãã¬ãŒã¹ã§ã¯ãªãããŒãžã§ã³ã¯ãæ°ãããŠãŒã¶ãŒã«ãšã£ãŠã¯ããè¯ãããã«èŠãã out=
ãã¿ãŒã³ã¯ç§ã«ãšã£ãŠååã«äžè¬çã§ãããäžçŽãŠãŒã¶ãŒã«ã¯ååãªãµãŒãã¹ãæäŸãããŸãã
ãndarray.sortã¡ãœãããå®è£ ããå¿ èŠããªãããã©ããã¯ããããŸããã ã¡ãœããïŒãŸãã¯ãã®ã€ã³ãã¬ãŒã¹ã®åäœïŒã«åé¡ã¯ãããŸããã
ããã¯ç§ã®APIæèå®éšã®äžéšã§ããã ç§ãã¡ãä»æã£ãŠãããã®ã«äœãåé¡ãããããšãæå³ããã€ããã¯ãããŸããã§ããã ãŒãããå§ããå Žåãã€ãŸããªã¹ãã®Python APIãšã®äžèŽã«é¢å¿ããªããšããä»®å®ã«è¿œå ãããšã䞊ã¹æ¿ãã«æšå¥šãããAPIã¯numpy.sorted(..., out=...)
ãªããšèšã£ãŠããŸãã
ããäžã€ã®åé¡ãªã®ã§ãä»®å®çã§ã¯ãªãïŒäœ¿çšããŠããå Žåã¯out
numpyã®å
šäœAPIã®äžè²«æ§ã®ããã«ããããŠãããã§ã¯å¥œãŸããéžæè¢ã§ãããç§ãã¡ã¯æçµçã«è¿œå ããããšãèšç»ãã¹ãã§ããout
ã«numpy.sort
ã numpy.partition
ã numpy.argsort
ããããŠããŸããçŸåšãããæã£ãŠããªã
ã¯ããç§ã®æèŠã§ã¯ãufuncsãšåãã»ãã³ãã£ã¯ã¹ãæã€out=
kwargãè¿œå ããããšã¯ãå®è³ªçã«ãã¹ãŠã®NumPyAPIé¢æ°ã«é©ããŠããŸãã out
åŒæ°ããªãå Žåã¯ãéåžžãæ¡åŒµãè¡ãããã®ãåŸ
ã£ãŠããŸãïŒãã ããå®éã«ã¯å°ããªæ¡åŒµã§ããããŸãã«ãã³ãŒãã®è€éããããŸãè¿œå ãã䟡å€ããªãå ŽåããããŸãïŒã
æãåèã«ãªãã³ã¡ã³ã
ããã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ ãã®æ©èœãååšããªãããšã«é©ããŸããã ä»ã®ãšãããåé¿çãšããŠ
np.apply_along_axis
ãšnp.random.permutation
ã䜿çšããŠããŸãã