[Numpy-discussion] {zeros, empty, ...}_like functions behavior with subclasses
Pierre GM
pgmdevlist at gmail.com
Mon Feb 28 19:24:07 EST 2011
On Mar 1, 2011, at 1:05 AM, Bruce Southey wrote:
> On Mon, Feb 28, 2011 at 4:52 PM, Wes McKinney <wesmckinn at gmail.com> wrote:
>> I'm having some trouble with the zeros_like function via np.fix:
>>
>> def zeros_like(a):
>> if isinstance(a, ndarray):
>> res = ndarray.__new__(type(a), a.shape, a.dtype, order=a.flags.fnc)
>> res.fill(0)
>> return res
>> try:
>> wrap = a.__array_wrap__
>> except AttributeError:
>> wrap = None
>> a = asarray(a)
>> res = zeros(a.shape, a.dtype)
>> if wrap:
>> res = wrap(res)
>> return res
>>
>> As you can see this is going to discard any metadata stored in a
>> subtype. I'm not sure whether this is a bug or a feature but wanted to
>> bring it up.
>>
>> Thanks,
>> Wes
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion at scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
>
> I guess this is ticket 929.
> http://projects.scipy.org/numpy/ticket/929
>
> I was looking at it today but was not sure what is really desired
> here. I considered that this just meant shape and dtype but not sure
> about masked or record arrays behavior. So:
> What is the value of having the metadata?
> What is the meaning of 'like' here?
Well, that depends on what you wanna do, of course. To handle metadata, I use some kind of dictionary updated in the __array_finalize__. Check numpy.ma.MaskedArray and its subclasses (like scikits.timeseries.TimeSeries) for the details.
Now that you could store some extra data in the dtype (if I remmbr and understand correctly), it might be worth considering a proper way to deal with that.
More information about the NumPy-Discussion
mailing list