Numpy Array a base64 y de vuelta a Numpy Array – Python

Ahora estoy tratando de averiguar cómo puedo recuperar una matriz numpy a partir de datos base64. Esta pregunta y respuesta sugieren que es posible: leer arrays de números fuera de Python, pero no se da un ejemplo.

Utilizando el código a continuación como ejemplo, ¿cómo puedo obtener una matriz Numpy a partir de los datos de base64 si conozco el tipo y la forma de la matriz?

import base64 import numpy as np t = np.arange(25, dtype=np.float64) s = base64.b64encode(t) r = base64.decodestring(s) q = ????? 

Quiero que una statement de python establezca q como una matriz numpy de dtype float64 para que el resultado sea una matriz idéntica a t. Así es como se ven las matrices codificadas y decodificadas:

 >>> 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\x00@\x00\x00\x00\x00\x00\x00\x08@\x00\x00\x00\x00\x00\x00\x10@\x00\x00\x00\x00\x00\x00\x14@\x00\x00\x00\x00\x00\x00\x18@\x00\x00\x00\x00\x00\x00\x1c@\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\x00(@\x00\x00\x00\x00\x00\x00*@\x00\x00\x00\x00\x00\x00,@\x00\x00\x00\x00\x00\x00.@\x00\x00\x00\x00\x00\x000@\x00\x00\x00\x00\x00\x001@\x00\x00\x00\x00\x00\x002@\x00\x00\x00\x00\x00\x003@\x00\x00\x00\x00\x00\x004@\x00\x00\x00\x00\x00\x005@\x00\x00\x00\x00\x00\x006@\x00\x00\x00\x00\x00\x007@\x00\x00\x00\x00\x00\x008@' >>> q = np.array( ???? 

La razón por la que pregunto es porque estoy trabajando en un proyecto en el que me gustaría almacenar una gran cantidad de arreglos Numpy en una base de datos MySQL en una aplicación desarrollada por django.

Usando este fragmento de django, puedo almacenar datos de base64 en un campo de texto: http://djangosnippets.org/snippets/1669/

Quiero escribir las matrices en la base de datos como base64 en lugar de convertir las matrices en una cadena de Unicode.

Gracias por tu ayuda.

 import base64 import numpy as np t = np.arange(25, dtype=np.float64) s = base64.b64encode(t) r = base64.decodebytes(s) q = np.frombuffer(r, dtype=np.float64) print(np.allclose(q, t)) # True