将 Numpy 中的张量从 2D 重塑为 3D
Reshaping tensor in Numpy from 2D to 3D
我正在使用 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)。
现在,我想重塑此数据集,使其成为形状为 (124800, 28, 28) 的 3D 张量。
我可以按如下方式重塑数据的一个实例:
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) 的形状?
您可以像这样重塑整个数组:
X_train = X_train.reshape((-1,28,28), order='F')
Matlab 使用列优先顺序(参见 here),因此您需要将顺序指定为 order='F'
以获得正确的方向。请参阅以下第一个字母 (w
) 的示例:
我正在使用 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)。
现在,我想重塑此数据集,使其成为形状为 (124800, 28, 28) 的 3D 张量。
我可以按如下方式重塑数据的一个实例:
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) 的形状?
您可以像这样重塑整个数组:
X_train = X_train.reshape((-1,28,28), order='F')
Matlab 使用列优先顺序(参见 here),因此您需要将顺序指定为 order='F'
以获得正确的方向。请参阅以下第一个字母 (w
) 的示例: