Convert a numpy array to a CSV string and a CSV string back to a numpy array Convert a numpy array to a CSV string and a CSV string back to a numpy array numpy numpy

Convert a numpy array to a CSV string and a CSV string back to a numpy array


First you should use join this way to avoid the last comma issue:

VIstring = ','.join(['%.5f' % num for num in VI])

Then to read it back, use numpy.fromstring:

np.fromstring(VIstring, sep=',')


>>> import numpy  as np>>> from cStringIO import StringIO>>> VI = np.array([ 17.95024446,  17.51670904,  17.08894626,  16.66695611,        16.25073861,  15.84029374,  15.4356215 ,  15.0367219 ,        14.64359494,  14.25624062,  13.87465893,  13.49884988,        13.12881346,  12.76454968,  12.40605854,  12.00293814,        11.96379322,  11.96272486,  11.96142533,  11.96010489,        11.95881595,  12.26924591,  12.67548634,  13.08158864,        13.4877041 ,  13.87701221,  14.40238245,  14.94943786,        15.49364166,  16.03681428,  16.5498035 ,  16.78362298,        16.90331119,  17.02299387,  17.12193689,  17.09448654,        17.00066063,  16.9300633 ,  16.97229868,  17.2169709 ,  17.75368411])>>> s = StringIO()>>> np.savetxt(s, VI, fmt='%.5f', newline=",")>>> s.getvalue()'17.95024,17.51671,17.08895,16.66696,16.25074,15.84029,15.43562,15.03672,14.64359,14.25624,13.87466,13.49885,13.12881,12.76455,12.40606,12.00294,11.96379,11.96272,11.96143,11.96010,11.95882,12.26925,12.67549,13.08159,13.48770,13.87701,14.40238,14.94944,15.49364,16.03681,16.54980,16.78362,16.90331,17.02299,17.12194,17.09449,17.00066,16.93006,16.97230,17.21697,17.75368,'>>> np.fromstring(s.getvalue(), sep=',')array([ 17.95024,  17.51671,  17.08895,  16.66696,  16.25074,  15.84029,        15.43562,  15.03672,  14.64359,  14.25624,  13.87466,  13.49885,        13.12881,  12.76455,  12.40606,  12.00294,  11.96379,  11.96272,        11.96143,  11.9601 ,  11.95882,  12.26925,  12.67549,  13.08159,        13.4877 ,  13.87701,  14.40238,  14.94944,  15.49364,  16.03681,        16.5498 ,  16.78362,  16.90331,  17.02299,  17.12194,  17.09449,        17.00066,  16.93006,  16.9723 ,  17.21697,  17.75368])


If you want some string representation whatsoever (not necessarily CSV), you could try this, which I have been using:

import numpy, json## arr is some numpy.ndarrays = json.dumps(arr.tolist())arrback = numpy.array(json.loads(s))

It works for most common datatypes.