编码和解码 numpy.array 到 base64。为什么必须使用 numpy.frombuffer?

Encoding and decoding numpy.array to base64. Why is necessary to use numpy.frombuffer?

请考虑,以下代码:

import base64
import numpy as np

array = np.array([1,2]).astype('float32')

arrayencode64 = base64.b64encode(array)

arraydecode64 = base64.b64decode(arrayencode64)

ARRAY = np.frombuffer(arraydecode64, dtype='float32')

print(array)
print()
print(arrayencode64)
print()
print(arraydecode64)
print()
for el in arraydecode64:
    print(el)
print()
print(ARRAY)

问题1:我想明白为什么应用base64.b64decode后,我没有找回原始对象?我的意思是,为什么需要使用指定类型的 np.frombuffer 来读取它?

因为,我期望在应用base64.b64decode后立即获得目标对象(绑定在数组变量中的numpy.array)。

问题 2: 当我用 for 循环 打印变量 arraydecode64 时,我得到了一个数字序列。它们到底是什么意思?

谢谢。

根据 documentationbase64.b64decode 所做的只是获取一个字符串和 return 一个字节对象。 np.frombuffer 然后获取这些字节并创建数组。 base64不知道numpy如何表示字节,也不知道什么是数组。