14
我现在试图找出如何从base64数据恢复numpy数组。这个问题和答案表明它是可能的:Reading numpy arrays outside of Python,但没有给出一个例子。numpy数组到base64并返回到Numpy数组 - Python
以下面的代码为例,如果我知道dtype和数组的形状,如何从base64数据获取Numpy数组?
import base64
import numpy as np
t = np.arange(25, dtype=np.float64)
s = base64.b64encode(t)
r = base64.decodestring(s)
q = ?????
我想要一个python语句将q设置为dtype float64的numpy数组,因此结果是一个与t相同的数组。这正是数组编码和解码的样子:
>>> t = np.arange(25,dtype=np.float64)
>>> t
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.,
11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21.,
22., 23., 24.])
>>> s=base64.b64encode(t)
>>> s
'AAAAAAAAAAAAAAAAAADwPwAAAAAAAABAAAAAAAAACEAAAAAAAAAQQAAAAAAAABRAAAAAAAAAGEAAAAAAAAAcQAAAAAAAACBAAAAAAAAAIkAAAAAAAAAkQAAAAAAAACZAAAAAAAAAKEAAAAAAAAAqQAAAAAAAACxAAAAAAAAALkAAAAAAAAAwQAAAAAAAADFAAAAAAAAAMkAAAAAAAAAzQAAAAAAAADRAAAAAAAAANUAAAAAAAAA2QAAAAAAAADdAAAAAAAAAOEA='
>>> r = base64.decodestring(s)
>>> r
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00 @\x00\x00\x00\x00\x00\x00"@\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x00&@\x00\x00\x00\x00\x00\x00(@\x00\x00\x00\x00\x00\x00*@\x00\x00\x00\x00\x00\x00,@\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\x006@\x00\x00\x00\x00\x00\[email protected]\x00\x00\x00\x00\x00\[email protected]'
>>> q = np.array(????
我要求的原因是因为我上一个项目,我想了很多numpy的阵列存储在MySQL数据库中的应用供电工作由django。
使用这个片断的Django我可以存储在一个文本框的base64数据:http://djangosnippets.org/snippets/1669/
我想要写的,而不是转换阵列Unicode字符为base64的阵列添加到数据库中。
感谢您的帮助。
非常感谢。 – sequoia
我还会补充说我通过应用q = np.reshape(q,(m,n))来完成多维数组的工作,其中m和n是t数组的原始维数。 – sequoia
多维数组处理引起了我的警惕 - b64encode返回了多维数组的结果,但这些数组不包含“内部”数组......可怕。感谢伟大的指针! –