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
> [email protected]
>
> On Dec 25, 2024, at 3:23 PM, Steven Ellis
> <[email protected]> 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
> <[email protected]<mailto:[email protected]>>
> 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
> [email protected]<mailto:[email protected]>
>
> _______________________________________________
> NumPy-Discussion mailing list --
> [email protected]<mailto:[email protected]>
> To unsubscribe send an email to
> [email protected]<mailto:
> [email protected]>
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/<
> https://urldefense.com/v3/__https://mail.python.org/mailman3/lists/numpy-discussion.python.org/__;!!Bt8fGhp8LhKGRg!A_N5Cns4800odNjjStN3QAH94TwUNBEkvr7lqW4-PnnUiGS_kckVyXKfS4QTR4YADAXXGOTbKZ-6RDYTC7knRCMj$
> >
> Member address:
> [email protected]<mailto:[email protected]>
>
> _______________________________________________
> NumPy-Discussion mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: [email protected]
_______________________________________________
NumPy-Discussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: [email protected]