将Numpy中的张量从2D重塑为3D

时间:2020-06-16 14:54:30

标签: python-3.x numpy reshape tensor

我正在使用EMNIST数据集,并且具有以下变量X_train

import scipy .io
emnist = scipy.io.loadmat(DIRECTORY + '/emnist-letters.mat')
data = emnist ['dataset']
X_train = data ['train'][0, 0]['images'][0, 0]

X_train的形状为(124800,784)。

现在,我想重塑此数据集的形状,以使其成为形状的3D张量(124800、28、28)。

我可以如下调整数据的一个实例:

X_train[index].reshape((28,28))

但是,以下循环不起作用:

for i in range(len(X_train)):
    X_train[i] = X_train[i].reshape((28,28))

如何重整数据集的形状以使其具有形状(124800、28、28)?

1 个答案:

答案 0 :(得分:1)

您可以像这样重塑整个数组:

X_train = X_train.reshape((-1,28,28), order='F')

Matlab使用列优先顺序(请参阅here),因此您需要将顺序指定为order='F'才能获得正确的方向。请参见以下示例的第一个字母(w): enter image description here