массив от base64 до numpy в python - PullRequest
1 голос
/ 05 марта 2020

У меня есть файл PDF, который я преобразовал в base64, а затем декодировал его в двоичный формат, т.е. (010101010), как это. Но я хочу, чтобы эти base64-закодированные данные были в массиве NumPy. Так что он представляет в растровом двоичном виде.

Ниже приведен код, который я пробовал до сих пор. Это дает мне двоичные числа, но как преобразовать его в NumPy 2D массив.

with open("sample.pdf", "rb") as pdf_file:
    encoded_string = base64.b64encode(pdf_file.read())
    decoded = base64.decodebytes(encoded_string)
    decoded_binary_val= "".join(["{:08b}".format(x) for x in decoded])
    print(decoded_binary_val)

Результат того же в (010101010111101011101010111101011101010101011) в этом формате. Но я хочу массив NumPy 2D т.е. (r *c)

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете сделать

arr = np.array([c for c in decoded_binary_val])

Это даст вам массив numpy строк. Если вам нужны числа, которые вы можете сделать:

arr = np.array([int(c) for c in decoded_binary_val])

Редактировать - Другой вариант:

Если вы хотите, чтобы строковые значения вы также могли просто привести к списку, например так:

arr = np.array(list(decoded_binary_val))

Но тогда, если вам нужны цифры, вам, вероятно, нужно отобразить:

arr = np.array(list(map(int, decoded_binary_val)))

Я не смог измерить разницу в производительности, поэтому вам придется проверить с вашей настройкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...