|
From: Travis O. <oli...@ee...> - 2006-02-13 21:58:27
|
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 |