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返回了多維數組的結果,但這些數組不包含「內部」數組......可怕。感謝偉大的指針! –