洗牌是为了增强模型的泛化能力
对给定的数组进行重新排列的方式主要有两种:
1、np.random.shuffle(x)
#现场修改序列,改变自身内容。(类似洗牌,打乱顺序)
In [30]: arr = np.arange(10)
In [31]: np.random.shuffle(arr)
In [32]: arr
Out[32]: array([5, 2, 7, 0, 6, 3, 4, 1, 8, 9])
#对多维数组进行打乱排列时,默认是对第一个维度也就是列维度进行随机打乱
In [37]: arr = np.arange(12).reshape(3,4)
In [38]: arr
Out[38]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
#将多维数组打乱
In [39]: np.random.shuffle(arr)
In [40]: arr
Out[40]:
array([[ 4, 5, 6, 7],
[ 0, 1, 2, 3],
[ 8, 9, 10, 11]])
2. np.random..permutation(x)
#直接生成一个随机排列的数组
In [41]: np.random.permutation(10)
Out[41]: array([5, 7, 3, 6, 0, 1, 2, 8, 4, 9])
#将数组重新排列
In [42]: np.random.permutation([1, 4, 9, 12, 15])
Out[42]: array([12, 1, 9, 4, 15])
In [43]: arr = np.arange(9).reshape((3, 3))
In [44]: arr
Out[44]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
In [45]: np.random.permutation(arr)
Out[45]:
array([[0, 1, 2],
[6, 7, 8],
[3, 4, 5]])