Ошибка TypeEr: только массивы размера 1 могут быть преобразованы в скаляры Python для зашифрованных данных - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь зашифровать этот набор данных Оптовый клиент , отбросив первые два столбца (канал и регион).Скрипт шифрования работает нормально, так как я могу сгенерировать открытый ключ для шифрования.Тем не менее, я думаю, что проблема заключается во вложенных циклах.Любая помощь будет оценена.

from Paillier_CRT.gmpy2mod import *
import numpy as np
import pandas as pd


priv, pub = generate_keypair(128)
n = pub.n
print("The public key is:", n)


def to_encrypt(public, data_matrix):
    data_encrypted = encrypt(public, data_matrix)
    return data_encrypted


def load_data():
    raw_data = pd.read_csv('wholesales1.csv')
    dtset = raw_data.drop(['Channel'], axis=1)
    new_dtset = dtset.drop(['Region'], axis=1)
    converted_data = new_dtset.values
    data_to_encrypt = []

    for row in converted_data:
        for elem in row:
            data_to_encrypt = to_encrypt(pub, int(converted_data))
            return data_to_encrypt


working_data = load_data()
print("The encrypted data is: ", working_data)

Сообщение об ошибке:

TypeError: only size-1 arrays can be converted to Python scalars

1 Ответ

0 голосов
/ 16 марта 2019

Эта ошибка обычно означает, что вы используете скалярное значение, где ожидался массив.

Вместо

data_to_encrypt = to_encrypt(pub, int(converted_data))

вы можете попробовать

data_to_encrypt = to_encrypt(pub, converted_data.astype(int))
...