[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