[Numpy-discussion] problem with assigning to recarrays
Brian Gerke
bgerke at slac.stanford.edu
Fri Feb 27 20:06:33 EST 2009
On Feb 27, 2009, at 4:30 PM, Robert Kern wrote:
>>
> r[where(r.field1 == 1.)] make a copy. There is no way for us to
> construct a view onto the original memory for this circumstance given
> numpy's memory model.
Many thanks for the quick reply. I assume that this is true only for
record arrays, not for ordinary arrays? Certainly I can make an
assignment in this way with a normal array.
Also, if it is truly impossible to change this behavior, or to have it
raise an error--then are there any best-practice suggestions for how
to remember and avoid running into this non-obvious behavior? If one
thinks of record arrays as inheriting from numpy arrays, then this
problem is certainly unexpected.
Also, I've just found that the following syntax does do what is
expected:
(r.field2)[where(field1 == 1.)] = 1.
It is at least a little aesthetically displeasing that the syntax
works one way but not the other. Perhaps my best bet is to stick with
this syntax and forget that the other exists? A less-than-satisfying
solution, but workable.
Brian
>
>
> r[where(r.field1 == 1.)].field2 = 0.0 assigns to the copy.
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma that is made terrible by our own mad attempt to interpret it as
> though it had an underlying truth."
> -- Umberto Eco
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
More information about the NumPy-Discussion
mailing list