Dave31415 - 10 months ago 52

Python Question

Trying to convert int arrays to string arrays in numpy

`In [66]: a=array([0,33,4444522])`

In [67]: a.astype(str)

Out[67]:

array(['0', '3', '4'],

dtype='|S1')

Not what I intended

`In [68]: a.astype('S10')`

Out[68]:

array(['0', '33', '4444522'],

dtype='|S10')

This works but I had to know 10 was big enough to hold my longest string. Is there a way of doing this easily without knowing ahead of time what size string you need? It seems a little dangerous that it just quietly truncates your string without throwing an error.

Answer

Again, this can be solved in pure Python:

```
>>> map(str, [0,33,4444522])
['0', '33', '4444522']
```

Or if you need to convert back and forth:

```
>>> a = np.array([0,33,4444522])
>>> np.array(map(str, a))
array(['0', '33', '4444522'],
dtype='|S7')
```

Source (Stackoverflow)