tags:

views:

81

answers:

2
>>> import numpy as np
>>> a = np.array(['zero', 'one', 'two', 'three'])
>>> a[1] = 'thirteen'
>>> print a
['zero' 'thirt' 'two' 'three']
>>>

As you can see, the second element has been truncated to the maximum number of characters in the original array.

Is it possible to workaround this problem?

+2  A: 

Use the dtype argument in numpy.array, e.g.:

>>> import numpy as np
>>> a = np.array(['zero', 'one', 'two', 'three'], dtype='S8')
>>> a[1] = 'thirteen'
>>> print(a)
['zero' 'thirteen' 'two' 'three']
rcs
+3  A: 

If you don't know the maximum length element, then you can use dtype=object

>>> import numpy as np
>>> a = np.array(['zero', 'one', 'two', 'three'], dtype=object)
>>> a[1] = 'thirteen'
>>> print a
['zero' 'thirteen' 'two' 'three']
>>>
bpowah
But then you lose the performance advantages of having an allocated contigous block of memory so you may as well use a python list.
thrope