From: Sebastian H. <ha...@ms...> - 2006-08-15 02:40:57
|
Travis Oliphant wrote: > Sebastian Haase wrote: >> Hi! >> I have a record array with a field 'mode' >> Mode is a small integer that I use to choose a "PixelType" >> So I did: >> >>>>> print PixelTypes[ mode ] >>>>> >> TypeError: tuple indices must be integers >> >>>>> pdb.pm() >>>>> >>> /home/haase/PrLinN64/Priithon/Mrc.py(813)MrcMode2numType() >>> >> -> return PixelTypes[ mode ] >> (Pdb) p mode >> 1 >> (Pdb) p type(mode) >> <type 'int32scalar'> >> (Pdb) p isinstance(mode, int) >> False >> >> Since numpy introduced special scalar types a simple statement like this >> doesn't work anymore ! Would it work if int32scalar was derived from int ? I >> actually thought it was ... >> > It does sub-class from int unless you are on a system where a c-long is > 64-bit then int64scalar inherits from int. > > On my 32-bit system: > > isinstance(array([1,2,3])[0],int) is true. > > > > -Travis I see - yes I forgot - that test was indeed run on 64bit Linux. And that automatically implies that there a 32bit-int cannot be used in place of a "normal python integer" !? I could see wanting to use int16 or event uint8 as a tuple index. Logically a small type would be save to use in place of a bigger one ... - Sebastian |