[Numpy-discussion] Scalars, comparisons and indexing. Is this a bug?
Fernando Perez
fperez.net at gmail.com
Fri Jul 14 20:52:58 EDT 2006
Hi all,
I just got bit by this problem, and I'm not really sure if this is
something that should be considered a numpy bug or not. It is a bit
unpleasant, at the least, though it can be easily worked around.
Here's a simple demonstration:
In [32]: a=array([1,2])
In [33]: b=1
In [34]: (1,2)[a[0]==b]
---------------------------------------------------------------------------
exceptions.TypeError Traceback (most
recent call last)
/home/fperez/research/code/mwmerge/mwadap-merge/mwadap/test/<ipython console>
TypeError: tuple indices must be integers
Whereas this works:
In [35]: c=2
In [36]: (1,2)[c==b]
Out[36]: 1
Basically, it seems that array scalars, upon comparisons, return
something that doesn't 'looke enough like an int' to python for it to
let you use it as an index, it's a 'boolscalar':
In [38]: a0==b0
Out[38]: True
In [39]: type _
-------> type(_)
Out[39]: <type 'boolscalar'>
Advice? Is this a numpy bug? Or should it just be left alone, and
this kind of inconvenience will disappear when 2.5 is out, with
__index__ support?
Cheers,
f
More information about the NumPy-Discussion
mailing list