On Tue, Aug 30, 2011 at 8:33 AM, Johann Cohen-Tanugi < [email protected]> wrote:
> I have numpy version 1.6.1 and I see the following behavior : > > In [380]: X > Out[380]: 1.0476157527896641 > > In [381]: X.__class__ > Out[381]: numpy.float64 > > In [382]: (2,3)*X > Out[382]: (2, 3) > > In [383]: (2,3)/X > Out[383]: array([ 1.90909691, 2.86364537]) > > In [384]: X=float(X) > > In [385]: (2,3)/X > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > /home/cohen/<ipython-input-385-cafbe080bfd5> in <module>() > ----> 1 (2,3)/X > > TypeError: unsupported operand type(s) for /: 'tuple' and 'float' > > > So it appears that X being a numpy float allows numpy to play some trick > on the tuple so that division becomes possible, which regular built-in > float does not allow arithmetics with tuples. > But why is multiplication with "*" not following the same prescription? > > That's strange. In [16]: x = float64(2.1) In [17]: (2,3)*x Out[17]: (2, 3, 2, 3) In [18]: (2,3)/x Out[18]: array([ 0.95238095, 1.42857143]) Note that in the first case x is treated like an integer. In the second the tuple is turned into an array. I think both of these cases should raise exceptions. Chuck
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
