Python - NumPy array_split添加了一个dminesion

时间:2017-01-24 23:47:07

标签: python arrays numpy multidimensional-array split

我正在尝试将数据集分成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正在为较新的数组添加维度。输入和输出都是错误的,因为输出只保留第一行而不是最后一列。

提前致谢。

1 个答案:

答案 0 :(得分:2)

问题在于洗牌:

In [661]: data = np.arange(12).reshape(3,4)
In [662]: np.random.shuffle(data)
In [663]: data[np.random.shuffle(data)].shape
Out[663]: (1, 3, 4)

shuffle就位,并返回None

data[None]

在开始时添加新维度。所以split得到一个(1,283034,31),它在轴上分成3个方向= 1(按照指示)。