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]