【发布时间】:2017-06-10 00:12:03
【问题描述】:
我正在尝试将数据集拆分为 3 个部分,但我遇到了问题,因为矩阵没有得到我想要的维度。
首先,我知道这种方法非常不合适,因为它将数据集分成 3 个相等的部分,应该是这样的。
其次,我现在主要关心的是numpy.array_split() 正在向数组添加维度。
代码:
train, test, cv = np.array_split(data[np.random.shuffle(data)], 3, axis = 1)
train_inputs = train[:,: -1]
test_inputs = test[:,: -1]
cv_inputs = cv[:,: -1]
train_outputs = train[:, -1]
test_outputs = test[:, -1]
cv_outputs = cv[:, -1]
print "Train Inputs Matrix" + str(train_inputs.shape) + "\n"
print "Test inputs Matrix " + str(test_inputs.shape) + "\n"
print "CV Inputs Matrix " + str(cv_inputs.shape) + "\n"
print "Train Outputs Matrix " + str(train_outputs.shape) + "\n"
print "Test Outputs Matrix " + str(test_outputs.shape) + "\n"
print "CV Outputs Matrix " + str(cv_outputs.shape) + "\n"
print train_inputs.ndim, train_outputs.ndim, test_inputs.ndim, test_outputs.ndim, cv_inputs.ndim, cv_outputs.ndim
所有这些,将输出到控制台如下:
Train Inputs Matrix(1, 94935, 31)
Test inputs Matrix (1, 94935, 31)
CV Inputs Matrix (1, 94934, 31)
Train Outputs Matrix (1, 31)
Test Outputs Matrix (1, 31)
CV Outputs Matrix (1, 31)
3 2 3 2 3 2
目标是将数据集拆分为三个独立的数组,保持原来的形状,(x, 31) 以供以后计算。然后输入将删除最后一列,输出将仅保留最后一列。
奇怪的行为是array_split 正在向较新的数组添加一个维度。尽管如此,输入和输出都是错误的,因为输出只保留第一行而不是最后一列。
提前致谢。
【问题讨论】:
-
data的形状是什么? -
这就是问题所在。原始集是一个 283034x31 数组。不是 3 维数组
-
data[np.random.shuffle(data)]的语法很奇怪。np.random.shuffle(data)返回None但将data改组到位。data[None]就是data。在前一行进行洗牌会更清楚。编辑:实际上,data[None]是添加额外维度的原因,如下 hpaulj 所述。 -
感谢您的提示!
标签: python arrays numpy multidimensional-array split