Я пытаюсь зашифровать все изображения MNIST (импортированные из двойной матрицы 10000x28x28) в python. Мне удалось получить одно изображение из набора, но когда я попытался зашифровать его, я получаю следующее сообщение об ошибке: ValueError: ndarray is not C -contiguous Приведенный ниже код был тем сообщением перед моей первой попыткой:
from Crypto.Cipher import AES
import scipy.io
from sympy.series import order
mymat = scipy.io.loadmat('test_images_var0_00.mat')
mymat_data = mymat['test_images_var0_00']
key = 'abcdefghijklmnop'
cipher = AES.new(key, AES.MODE_ECB)
myfinal = mymat_data
print(mymat_data.shape)
print(myfinal.shape)
#is (10000,28,28)
myselection = mymat_data[1,:,:]
#myselection = myselection.copy(order = 'C')
mySelectionEncrypted = cipher.encrypt(myselection)
print(myselection.shape)
print(myselection)
myfinal[1,:,:] = myselection
print(mySelectionEncrypted)
Я обновил код в соответствии с ValueError: ndarray не является C -смежным в Cython , чтобы иметь значение 'C' - непрерывно:
from Crypto.Cipher import AES
import scipy.io
from sympy.series import order
mymat = scipy.io.loadmat('test_images_var0_00.mat')
mymat_data = mymat['test_images_var0_00']
key = 'abcdefghijklmnop'
cipher = AES.new(key, AES.MODE_ECB)
myfinal = mymat_data
print(mymat_data.shape)
print(myfinal.shape)
#is (10000,28,28)
myselection = mymat_data[1,:,:]
myselection = myselection.copy(order = 'C')
mySelectionEncrypted = cipher.encrypt(myselection)
print(myselection.shape)
print(myselection)
myfinal[1,:,:] = myselection
print(mySelectionEncrypted)
Однако вывод представляет собой нечетный шестнадцатеричный код (b '\ xf5e ~ \' \ x8d \ n \ xfa \ xd7 \ xc8H \ xb9e \ x89 \ x8c1 \ xdf \ xf5e ~ \ '...), верно ли это, и если да, то как я могу преобразовать его обратно в (28x28 двойной)?