Изменение формы тензора в Numpy из 2D в 3D - PullRequest
0 голосов
/ 16 июня 2020

Я использую набор данных 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).

Я могу изменить форму одного экземпляра данных следующим образом:

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

Однако следующий l oop не работает:

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

Что я могу do, чтобы изменить мой набор данных, чтобы он приобрел форму (124800, 28, 28)?

1 Ответ

1 голос
/ 16 июня 2020

Вы можете изменить форму всего массива следующим образом:

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

Matlab использует порядок по столбцам (см. здесь ), поэтому вам нужно указать порядок как order='F' в чтобы получить правильную ориентацию. См. Следующий пример для первой буквы (w): enter image description here

...