出于某种原因,numpy报告没有行数的一维numpy数组的形状。具有784个元素的numpy数组具有形状:(784,)
。
这是一个问题,因为我使用的库期望正确的形状属性(例如(784, 1)
)。
如果我只有一个阵列,我可以这样做:
train_y = train_y.reshape((train_y.shape[0], 1)
但有没有办法重塑子阵列而不进行for循环?
我有一个形状为阵列的阵列
(60000, 784)
但是,子数组的形状为(784,)
,我希望它们为(784,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)
。