[Numpy-discussion] String array equality test does not broadcast
Travis Oliphant
oliphant at ee.byu.edu
Mon Feb 13 13:59:01 EST 2006
Russel Howe wrote:
> I am converting some numarray code to numpy and I noticed this behavior:
>
> >>> from numpy import *
> >>> sta=array(['abc', 'def', 'ghi'])
> >>> stb=array(['abc', 'jkl', 'ghi'])
> >>> sta==stb
> False
>
> I expected the same as this:
> >>> a1=array([1,2,3])
> >>> a2=array([1,4,3])
> >>> a1==a2
> array([True, False, True], dtype=bool)
>
> I am trying to figure out how to fix this now...
Equality testing on string arrays does not work (equality testing uses
ufuncs internally which are not supported generally for flexible
arrays). You must use chararray's.
Thus,
sta.view(chararray) == stb.view(chararray)
Or create chararray's from the beginning:
sta = char.array(['abc','def','ghi'])
stb = char.array(['abc','jkl','ghi'])
Char arrays are a special subclass of the ndarray that give arrays all
the methods of strings (and unicode) elements and allow (rich)
comparison operations.
-Travis
More information about the NumPy-Discussion
mailing list