[Numpy-discussion] Integers to negative integer powers, time for a decision.

Krisztián Horváth raksi.raksi at gmail.com
Sun Oct 9 06:42:44 EDT 2016


> Sounds good to me. I agree that we should prioritize within-numpy
> consistency over consistency with Python.
>

I agree with that. Because of numpy consitetncy, the `**` operator should
always return float. Right now the case is:

>>> aa = np.arange(2, 10, dtype=int)
array([2, 3, 4, 5, 6, 7, 8, 9])

>>> bb = np.linspace(0, 7, 8, dtype=int)
array([0, 1, 2, 3, 4, 5, 6, 7])

>>> 1/aa
array([ 0.5       ,  0.33333333,  0.25      ,  0.2       ,  0.16666667,
        0.14285714,  0.125     ,  0.11111111])

>>> aa**-1
array([0, 0, 0, 0, 0, 0, 0, 0])

>>> 1/aa**2
array([ 0.25      ,  0.11111111,  0.0625    ,  0.04      ,  0.02777778,
        0.02040816,  0.015625  ,  0.01234568])

>>> aa**-2
array([0, 0, 0, 0, 0, 0, 0, 0])

>>> aa**bb
array([      1,       3,      16,     125,    1296,   16807,  262144,
       4782969])

>>> 1/aa**bb
array([  1.00000000e+00,   3.33333333e-01,   6.25000000e-02,
         8.00000000e-03,   7.71604938e-04,   5.94990183e-05,
         3.81469727e-06,   2.09075158e-07])

>>> aa**(-bb)
array([1, 0, 0, 0, 0, 0, 0, 0])

For me this behaviour is confusing. But I am not an expert just a user. I
can live together with anything if I know what to expect. And I greatly
appreciate the work of any developer for this excellent package.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20161009/55ce0493/attachment.html>


More information about the NumPy-Discussion mailing list