Art*_*örk 10 python random numpy shuffle
我有一个2-d numpy数组,我想要洗牌.最好的方法是将它重塑为1-d,再次洗牌和重塑为2-d还是可以在不重塑的情况下进行洗牌?
只使用random.shuffle不会产生预期的结果,numpy.random.shuffle只会洗牌:
import random
import numpy as np
a=np.arange(9).reshape((3,3))
random.shuffle(a)
print a
[[0 1 2]
[3 4 5]
[3 4 5]]
a=np.arange(9).reshape((3,3))
np.random.shuffle(a)
print a
[[6 7 8]
[3 4 5]
[0 1 2]]
Run Code Online (Sandbox Code Playgroud)
DSM*_*DSM 13
您可以告诉np.random.shuffle我们对扁平版本采取行动:
>>> a = np.arange(9).reshape((3,3))
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> np.random.shuffle(a.flat)
>>> a
array([[3, 5, 8],
[7, 6, 2],
[1, 4, 0]])
Run Code Online (Sandbox Code Playgroud)
你可以洗牌a.flat:
>>> np.random.shuffle(a.flat)
>>> a
array([[6, 1, 2],
[3, 5, 0],
[7, 8, 4]])
Run Code Online (Sandbox Code Playgroud)
我认为这一点非常重要。
您可以使用random.shuffle(a)
ifa是一维 numpy 数组。如果它是 ND(其中 N > 2)比
random.shuffle(a)
会破坏你的数据并返回一些随机的东西。正如你在这里看到的:
import random
import numpy as np
a=np.arange(9).reshape((3,3))
random.shuffle(a)
print a
[[0 1 2]
[3 4 5]
[3 4 5]]
Run Code Online (Sandbox Code Playgroud)
这是numpy 的一个已知错误(或功能?)。
因此,仅 numpy.random.shuffle(a)用于numpy 数组。
| 归档时间: |
|
| 查看次数: |
9867 次 |
| 最近记录: |