乐趣区

关于numpy:学习神经网络minibatch

1.numpy 的切片
X[m,n],示意 X 的第 m 维中的第 n 段数据。
也能够按切片写法:
X[m:n,k:v],第一维从 m 到 n -1, 第二维取从 k 到 v -1
X[:,n],示意第一维的 m 全副取,第二维取第 n 段数据,如果是矩阵,就是取第 n 列。

X[:,list], 第二维依照 list 外面的数字索引取

import numpy as np
np.random.seed(1)
X = np.random.randn(5,3)
print(X)

X 是 5 行 3 列矩阵,后果:

[[1.62434536 -0.61175641 -0.52817175]
 [-1.07296862  0.86540763 -2.3015387]
 [1.74481176 -0.7612069   0.3190391]
 [-0.24937038  1.46210794 -2.06014071]
 [-0.3224172  -0.38405435  1.13376944]]

随机失去一个列表:

np.random.seed(1)
permutation = list(np.random.permutation(3))
print(permutation)

permutation 列表是:
[0, 2, 1]

按 X[:,list]形式来取数据,也就是第一维全副取,第二维依照 list 的索引来取:

shuffed_X = X[:,permutation]
print(shuffed_X)

后果是:

[[1.62434536 -0.52817175 -0.61175641]
 [-1.07296862 -2.3015387   0.86540763]
 [1.74481176  0.3190391  -0.7612069]
 [-0.24937038 -2.06014071  1.46210794]
 [-0.3224172   1.13376944 -0.38405435]]

因为这里 list 其实是从 0 - 2 的,其维度与 n 一样,实际上就是随机地把列进行打乱。

退出移动版