Numpy Array to base64 and back to Numpy Array - Python
Question: I am now trying to figure out how I can recover a numpy array from base64
data. This question and answer suggest it is possible: [Reading numpy arrays
outside of Python](http://stackoverflow.com/questions/2725602/reading-numpy-
arrays-outside-of-python) but an example is not given.

Using the code below as an example, how can I get a Numpy array from the
base64 data if I know the dtype and the shape of the array?

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

I want a python statement to set q as a numpy array of dtype float64 so the
result is an array identical to t. This is what the arrays encoded and decoded
look like:

    
    
    >>> 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( ????
    

The reason I am asking is because I am working on a project where I would like
to store a lot of Numpy arrays in a MySQL database in an app powered by
django.

Using this django snippet I can store base64 data in a textfield:
<http://djangosnippets.org/snippets/1669/>

I want to write the arrays to the database as base64 instead of converting the
arrays to a string of unicode.

Thanks for your help.


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

