Done.

https://github.com/numpy/numpy/issues/28070

—
Daniel Israel
XCP-4: Continuum Models and Numerical Algorithms
d...@lanl.gov

On Dec 26, 2024, at 3:44 AM, Sebastian Berg <sebast...@sipsolutions.net> wrote:

That seems like a bug but not sure why it would happen.  It needs to
call `__array__`, but indeed of course not with `copy=True`.

Would you open an issue on github?

- Sebastian


On Thu, 2024-12-26 at 03:46 +0000, Israel, Daniel M via NumPy-
Discussion wrote:
Sure.  I didn’t originally, because I thought it would require an
entire custom array container, but the following trivial example
actually shows the behavior in question:

import numpy

class MyThing(object):
    def __array__(self, dtype=None, copy=None):
        print(f"MyThing.__array__(dtype={dtype}, copy={copy})")
        return numpy.ones((5, 5))

u = numpy.zeros((5, 5))
v = MyThing()

u[...] = v

If you run this code, as part of the final assignment statement, the
__array__ method is called for ‘v’ with copy=True.  Why?

—
Daniel Israel
XCP-4: Continuum Models and Numerical Algorithms
d...@lanl.gov

On Dec 25, 2024, at 3:23 PM, Steven Ellis
<stevenalonzoel...@gmail.com> wrote:

Hi David,

New to the listserv, but, maybe you can provide a reproducible
example?

Steven

On Wed, Dec 25, 2024, 2:19 PM Israel, Daniel M via NumPy-Discussion
<numpy-discussion@python.org<mailto:numpy-discussion@python.org><mailto:numpy-discussion@python.org>>
wrote:
I was updating some code that uses a custom array container built
with the mixin library.  Specifically, I was trying to eliminate some
warnings due to the change to the __array__ interface to add a copy
argument.  In doing so, I discovered that, for two objects u, v in my
container class, the code:

u[…] = v

performs a copy on v.  Specifically, it calls __array__() with
copy=True.  This seems unnecessary and wasteful of memory.  Can
someone explain to me what is happening here?

Thanks.

—
Daniel Israel
XCP-4: Continuum Models and Numerical Algorithms
d...@lanl.gov<mailto:d...@lanl.gov><mailto:d...@lanl.gov>

_______________________________________________
NumPy-Discussion mailing list --
numpy-discussion@python.org<mailto:numpy-discussion@python.org><mailto:numpy-discussion@python.org>
To unsubscribe send an email to
numpy-discussion-le...@python.org<mailto:numpy-discussion-le...@python.org><mailto:
numpy-discussion-le...@python.org<mailto:numpy-discussion-le...@python.org>>
https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/numpy-discussion.python.org/__;!!Bt8fGhp8LhKGRg!E3HQYkx9xlxE5G0T0SKtYJd3ePlJvgTzVscYN-DNWg53X2Z6znFmxvOZ3uAPcM2Oqr_V-84Wy-QctwblZF8gVw$
 <
https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/numpy-discussion.python.org/__;!!Bt8fGhp8LhKGRg!A_N5Cns4800odNjjStN3QAH94TwUNBEkvr7lqW4-PnnUiGS_kckVyXKfS4QTR4YADAXXGOTbKZ-6RDYTC7knRCMj$

Member address:
stevenalonzoel...@gmail.com<mailto:stevenalonzoel...@gmail.com><mailto:stevenalonzoel...@gmail.com>

_______________________________________________
NumPy-Discussion mailing list -- 
numpy-discussion@python.org<mailto:numpy-discussion@python.org>
To unsubscribe send an email to 
numpy-discussion-le...@python.org<mailto:numpy-discussion-le...@python.org>
https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/numpy-discussion.python.org/__;!!Bt8fGhp8LhKGRg!E3HQYkx9xlxE5G0T0SKtYJd3ePlJvgTzVscYN-DNWg53X2Z6znFmxvOZ3uAPcM2Oqr_V-84Wy-QctwblZF8gVw$
Member address: sebast...@sipsolutions.net<mailto:sebast...@sipsolutions.net>

_______________________________________________
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