python中的base64到numpy数组

python中的base64到numpy数组,python,arrays,numpy,raster,Python,Arrays,Numpy,Raster,我有一个pdf文件,我将其转换成base64,然后将其解码成二进制格式,即(010101010),如下所示。但是我希望这个base64编码的数据在一个NumPy数组中。因此,它以光栅二进制形式表示 下面是我迄今为止尝试过的代码。它将我转换为二进制数,但如何将其转换为NumPy 2D数组 with open("sample.pdf", "rb") as pdf_file: encoded_string = base64.b64encode(pdf_file.read()) deco

我有一个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)
相同的结果以(01010101011110101110110101111101011111111010101011)此格式显示。但是我想要一个NumPy 2D数组,即(r*c)

你可以做

arr=np.array([c代表解码二进制值中的c])
这将为您提供一个字符串的numpy数组。 如果您想要数字,可以执行以下操作:

arr=np.array([int(c)表示解码二进制值中的c])
编辑-另一个选项:

如果需要字符串值,也可以将其强制转换为列表,如下所示:

arr=np.array(列表(已解码的二进制值))
但如果你想要数字,你可能需要映射:

arr=np.array(列表(map(int,解码的二进制值)))
我无法测量性能差异,因此您必须检查您的设置。

您可以这样做

arr=np.array([c代表解码二进制值中的c])
这将为您提供一个字符串的numpy数组。 如果您想要数字,可以执行以下操作:

arr=np.array([int(c)表示解码二进制值中的c])
编辑-另一个选项:

如果需要字符串值,也可以将其强制转换为列表,如下所示:

arr=np.array(列表(已解码的二进制值))
但如果你想要数字,你可能需要映射:

arr=np.array(列表(map(int,解码的二进制值)))

我无法测量性能上的差异,因此您必须检查您的设置。

我希望根据base64图像的高度和宽度将其放入2D NumPy阵列假设您知道大小,您可以在1d阵列上使用np.Reformate。例如arr.Reformate((r,c))。这就是如何获得大小的问题。我不能假设pdf的大小?在这种情况下,这是一个完全不同的问题。除非它存储在某个头文件中,否则无法从字节流中获取。无法帮助您。我希望根据base64图像的高度和宽度将其放入2D NumPy数组假设您知道大小,您可以在1d数组上使用np.Reformate。例如arr.Reformate((r,c))。这就是如何获得大小的问题。我不能假设pdf的大小?在这种情况下,这是一个完全不同的问题。除非它存储在某个头文件中,否则无法从字节流中获取。我帮不了你。