我有两个需要连接的数组:
X_train的形状是(3072, 50000)
,y_train的形状是(50000,)
我想将它们连接起来,以便一次性打乱所有索引。我尝试了以下方法,但都不起作用:
np.concatenate([X_train, np.transpose(y_train)])np.column_stack([X_train, np.transpose(y_train)])
我该如何连接它们呢?
回答:
为了针对任务而不是你的问题提供一些建议:不要这样做!
假设X
是你的样本/观察值,y
是你的目标值:
只需生成一个随机排列,并创建视图(没有任何复制或修改),例如(未经测试):
import numpy as npX = np.random.random(size=(50000, 3072))y = np.random.random(size=50000)perm = np.random.permutation(X.shape[0]) # 假设 X.shape[0] == y.shape[0]X_perm = X[perm] # 视图!!!y_perm = y[perm]
提醒:你的初始形状与大多数基于Python的机器学习工具不兼容,因为通常的解释是:
- 第一维/行:样本
- 第二维/列:特征
由于样本数量需要与目标值y
的数量相同,你会发现我的例子在这方面是正确的,而你的例子需要对X
进行转置