Python 为NN洗牌两个numpy数组
我有两个numpy数组用于输入数据X和输出数据yPython 为NN洗牌两个numpy数组,python,arrays,numpy,neural-network,Python,Arrays,Numpy,Neural Network,我有两个numpy数组用于输入数据X和输出数据y X = np.array(([2, 3], # sample 1 x [16, 4]), dtype=float) # sample 2 x y = np.array(([1, 0], # sample 1 y [0, 1]), dtype=float) # sample 2 y 我想使用小批量来
X = np.array(([2, 3], # sample 1 x
[16, 4]), dtype=float) # sample 2 x
y = np.array(([1, 0], # sample 1 y
[0, 1]), dtype=float) # sample 2 y
我想使用小批量来训练NN,在知道相应的输出仍然对齐的情况下,如何洗牌这两个数组?您可以拥有一个与相应数组形状相同的索引数组,并且每次洗牌索引数组。在这种情况下,可以使用无序索引以相同的方式重新对齐两个数组
In [122]: indices = np.indices((2, 2))
In [125]: np.random.shuffle(indices)
In [126]: indices
Out[126]:
array([[[0, 0],
[1, 1]],
[[0, 1],
[0, 1]]])
In [127]: x[indices[0], indices[1]]
Out[127]:
array([[ 2., 3.],
[16., 4.]])
In [128]: y[indices[0], indices[1]]
Out[128]:
array([[1., 0.],
[0., 1.]])
使用sklearn很容易:
X, null, y, null = train_test_split(X, y, test_size=0, random_state=42)
保持X和y对齐似乎很好,但如果我的X和y阵列形状不同,这是否仍然有效?@向导否,但在这种情况下,这取决于你如何定义“对齐”的概念rows@Wizard可能有类似的方法,但最好用一个例子来说明这一点,或者你可以问另一个问题。测试单元大小不能为0。