[Numpy-discussion] convert to string - astype(str)

Travis Oliphant travis@continuum...
Sun Jun 10 01:17:25 CDT 2012


On Jun 9, 2012, at 4:45 PM, josef.pktd@gmail.com wrote:

> Is there a way to convert an array to string elements in numpy,
> without knowing the string length?

Not really.   In the next release of NumPy you should be able to do.

result = array(arr2, str)

and it will determine the length of the string for you.  

For now, I would compute the max length via 

int(math.ceil(math.log10(np.max(arr2))))


-Travis



> 
> 
>>>> arr2 = np.arange(8, 13)
> 
>>>> arr2.astype(str)   # bad
> array(['8', '9', '1', '1', '1'],
>      dtype='|S1')
> 
>>>> arr2.astype('S2')
> array(['8', '9', '10', '11', '12'],
>      dtype='|S2')
> 
>>>> map(str, arr2)
> ['8', '9', '10', '11', '12']
> 
> 
>>>> arr3 = np.round(np.random.rand(5), 2)
>>>> arr3
> array([ 0.51,  0.86,  0.15,  0.68,  0.59])
> 
>>>> arr3.astype(str)   # bad
> array(['0', '0', '0', '0', '0'],
>      dtype='|S1')
> 
>>>> arr3.astype('S4')
> array(['0.51', '0.86', '0.15', '0.68', '0.59'],
>      dtype='|S4')
> 
>>>> map(str, arr3)
> ['0.51', '0.86', '0.15', '0.68', '0.59']
> 
>>>> np.__version__
> '1.5.1'
> 
> (from an issue in statsmodels)
> 
> Thanks,
> 
> Josef
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion



More information about the NumPy-Discussion mailing list