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?
The numpy. char module provides a set of vectorized string operations for arrays of type numpy.
To perform element-wise comparison of two string arrays using a comparison operator, use the numpy. compare_chararrays() method in Python Numpy. The arr1 and arr2 are the two input string arrays of the same shape to be compared.
numpy. string_ is the NumPy datatype used for arrays containing fixed-width byte strings. On the other hand, str is a native Python type and can not be used as a datatype for NumPy arrays*.
To compare each element of a NumPy array arr against the scalar x using any of the greater (>), greater equal (>=), smaller (<), smaller equal (<=), or equal (==) operators, use the broadcasting feature with the array as one operand and the scalar as another operand.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With