On Fri, Oct 28, 2022 at 10:57 AM Sebastian Berg <sebastian@sipsolutions.net> wrote:
Hi all,

As mentioned earlier, I would like to propose changing the
representation of scalars in NumPy.  Discussion and ideas on changes
are much appreciated!

The main change is to show scalars as:

* `np.float64(3.0)`  ­instead of just `3.0`
* `np.True_` instead of `True`
* `np.void((3, 5), dtype=[('a', '<i8'), ('b', 'u1')])` instead of
  `(3, 5)`
* Use `np.` rather than `numpy.` for datetime/timedelta.

These all seem like good ideas to me, thanks for working on this Sebastian.

Cheers,
Ralf


This way it is clear for users that they are dealing with NumPy scalars
which behave different from Python scalars.
The `str()` that is given when using `print()` and the way arrays are
shown will be unchanged.

The NEP draft can be found here:

    https://numpy.org/neps/nep-0051-scalar-representation.html

and it includes more details and related changes.

The implementation is largely finished and can be found here:

   https://github.com/numpy/numpy/pull/22449

W are fairly late in the release cycle and the change should not block
other things.  So, the aim is to merge it early in the next release
cycle.  That way downstream has time to fix documentation is wanted.

Depending on how discussion goes, I hope to formally propose the NEP
fairly soon, so that the merging the implementation doesn't need to
wait on NEP approval.

Cheers,

Sebastian




On Thu, 2022-09-08 at 11:38 +0200, Sebastian Berg wrote:
>
> TL;DR:  NumPy scalars representation is e.g. `34.3` instead of
> `float32(34.3)`.  So the representation is missing the type
> information.  What are your thoughts on changing that?
>
>
> Hi all,
>
> I am thinking about the next steps for NEP 50 (The NEP wants to fix
> the
> NumPy promotion rules, especially with respect to scalars):
>
>     https://numpy.org/neps/nep-0050-scalar-promotion.html
>
> In relation to that, there was one point that Stéfan brought up
> previously.
>
> The NumPy scalars (representation) currently print as numbers:
>
>     >>> np.float32(34.3)
>     34.3
>     >>> np.uint8(5)
>     5
>
> That can already be confusing now.  However, it gets more problematic
> if NEP 50 is introduced since the behavior between a Python `34.3`
> and
> `np.float32(34.3)` would differ more than it does now (please refer
> to
> the NEP).
>
> The change would be that we should print as:
>
>     float64(34.3)  (or similar?)
>
> This Email is mainly to ask for any feedback or concern on such a
> change.  I suspect we may have to write a very brief NEP about it.
>
> If there is little concern, maybe we could move forward such a change
> promptly.  Otherwise it could be moved forward together with NEP 50
> and
> take effect in a "major" release [1].
>
> Cheers,
>
> Sebastian
>
>
>
> [1] Note that for me, even a major release would hopefully not affect
> the majority of users or be very disruptive.
>
> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-leave@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: sebastian@sipsolutions.net


_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-leave@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: ralf.gommers@gmail.com