On Fri, Sep 13, 2019 at 12:58 PM Irvin Probst <irvin.pro...@ensta-bretagne.fr> wrote: > > Hi, > Is it expected/documented that np.round and np.set_printoptions do not > output the same result on screen ? > I tumbled into this running this code: > > import numpy as np > mes = np.array([ > [16.06, 16.13, 16.06, 16.00, 16.06, 16.00, 16.13, 16.00] > ]) > > avg = np.mean(mes, axis=1) > print(np.round(avg, 2)) > np.set_printoptions(precision=2) > print(avg) > > > Which outputs: > > [16.06] > [16.05] > > Is that worth a bug report or did I miss something ? I've been able to > reproduce this on many windows/linux PCs with python/numpy releases from > 2017 up to last week. > > Thanks. > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion
Hi, I just want to add that you can use literal 16.055 to reproduce this: >>> import numpy as np >>> np.set_printoptions(precision=2) >>> np.array([16.055]).round(2) array([16.06]) >>> np.array([16.055]) array([16.05]) I would think it has to do with "round to nearest even": >>> np.array(16.055) array(16.05) >>> np.array(16.065) array(16.07) >>> np.array(16.065).round(2) 16.07 But it's as if `round` rounded decimal digits upwards (16.055 -> 16.06, 16.065 -> 16.07), whereas the `repr` rounded to the nearest odd(!) digit (16.055 -> 16.05, 16.065 -> 16.07). Does this make any sense? I'm on numpy 1.17.2. (Scalars or 1-length 1d arrays don't seem to make a difference). Regards, AndrĂ¡s _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion