Hi All,

When the repr of an array is shown, currently the dtype and shape are
explicitly listed if these cannot be directly inferred from the list
that is shown, i.e., if the dtype is not float64 or int64, and if the
size of the array is zero, but the shape not the simple (0,).

For instance,

```
np.empty((10,2,0), dtype="i2")
array([], shape=(10, 2, 0), dtype=int16)
```

I propose to also show the shape for the (rare) case that an array is
summarized, i.e., when it has more than the default threshold of 1000
elements, and elements are replaced by `...`.  The logic is that also in
that case it is no longer clear what the shape actually is, which is
useful information (e.g., if working in a notebook -- which is the
original use case at https://github.com/numpy/numpy/issues/27461).

I have a PR for that at https://github.com/numpy/numpy/pull/27482
which would lead to the following:

```
np.arange(1001)
array([   0,    1,    2, ...,  998,  999, 1000], shape=(1001,))
```

Just to be sure: this PR causes *no* change for any arrays with sizes
less than a 1000, so I do not believe this change will lead to a lot of
unnecessary churn for down-stream packages.  Indeed, between numpy and
astropy (which has lots of doctests), the only changes to (doc)tests
that were needed are the very few for arrays where the "threshold" is
explicitly exceeded.

One irritant is that the shape is not an argument that can be passed in
to an `np.array` call.  While this is just as much the case for
zero-sized arrays, perhaps a better solution would be to move the shape
information out of the parentheses, e.g., using ``...)  # shape=(...)``.
I can change the PR to do that if that's the consensus.

All the best,

Marten
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to