I like this, too.

And I think the trailing comment, # shape=... is much better, as it gets
the best of both worlds: user get the info, and tools which do
eval(repr(..)) only need to learn to ignore the comment. For one, numpy's
own doctests will keep working with no churn since scipy_doctest handles
this already.

Evgeni

вт, 1 окт. 2024 г., 01:07 Chris Barker via NumPy-Discussion <
numpy-discussion@python.org>:

> I like this.
>
> while ideally, eval(repr(an_object)) == object, in practice this is
> already violated fro large arays -- so other than doctests, this shouldn't
> cause too many headaches.
>
> -CHB
>
>
> On Mon, Sep 30, 2024 at 10:13 AM Marten van Kerkwijk <
> m...@astro.utoronto.ca> wrote:
>
>> 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: chris.bar...@noaa.gov
>>
>
>
> --
>
> Christopher Barker, Ph.D.
> Oceanographer
>
> Emergency Response Division
> NOAA/NOS/OR&R            (206) 526-6959   voice
> 7600 Sand Point Way NE
> <https://www.google.com/maps/search/7600+Sand+Point+Way+NE?entry=gmail&source=g>
>   (206) 526-6329   fax
> Seattle, WA  98115       (206) 526-6317   main reception
>
> chris.bar...@noaa.gov
> _______________________________________________
> 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: evgeny.burovs...@gmail.com
>
_______________________________________________
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