Numpy重塑子列表

时间:2015-11-15 18:15:57

标签: python arrays numpy

出于某种原因,numpy报告没有行数的一维numpy数组的形状。具有784个元素的numpy数组具有形状:(784,)。 这是一个问题,因为我使用的库期望正确的形状属性(例如(784, 1))。

如果我只有一个阵列,我可以这样做: train_y = train_y.reshape((train_y.shape[0], 1) 但有没有办法重塑子阵列而不进行for循环? 我有一个形状为阵列的阵列  (60000, 784)但是,子数组的形状为(784,),我希望它们为(784,1)

1 个答案:

答案 0 :(得分:2)

NumPy是一个n维数组库,而不是一个矩阵库。 1D数组不会拥有行。

如果你想要一个任意数组的视图,在末尾有一个额外的长度为1的轴,你可以这样做:

train_y = train_y[..., np.newaxis]
# or
train_y = train_y.reshape(train_y.shape + (1,))

虽然最好更改您最初创建此train_y数组的方式。

这将生成一个形状为(60000, 784, 1)的数组。根据您的期望,这可能正是您想要的,或者您可能认为这是令人厌恶的。无论如何,train_y[0]的形状为(784, 1)