tags:

views:

50

answers:

1

In the following example

In [8]: import numpy as np

In [9]: strings = np.array(['hello    ', 'world    '], dtype='|S10')

In [10]: strings == 'hello'
Out[10]: array([False, False], dtype=bool)

The comparison fails because of the whitespace. Is there a Numpy built-in function that does the equivalent of

In [12]: np.array([x.strip()=='hello' for x in strings])
Out[12]: array([ True, False], dtype=bool)

which does give the correct result?

+3  A: 

Numpy provides vectorised string operations for arrays similar to Python's string methods. They are in the numpy.char module.

http://docs.scipy.org/doc/numpy/reference/routines.char.html

import numpy as np

strings = np.array(['hello    ', 'world    '], dtype='|S10')

print np.char.strip(strings) == 'hello'
# prints [ True False]

Hope this is helpful.

PreludeAndFugue