convert to string - astype(str)

Is there a way to convert an array to string elements in numpy, without knowing the string length?
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

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

On Sun, Jun 10, 2012 at 2:17 AM, Travis Oliphant <travis@continuum.io> wrote:
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))))
Thanks Travis, It's good to know when I can stop looking. Josef
-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
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
participants (2)
-
josef.pktd@gmail.com
-
Travis Oliphant