Python 为NN洗牌两个numpy数组

Python 为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 我想使用小批量来

我有两个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

我想使用小批量来训练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。