[Numpy-discussion] is ndarray.base the closest base or the ultimate base?

Pauli Virtanen pav+sp at iki.fi
Mon Sep 21 06:11:43 EDT 2009


Mon, 21 Sep 2009 10:51:52 +0100, Citi, Luca wrote:
> Thanks for your quick answer.
> 
> Is there a reason for that?
> Am I wrong or it only makes life harder, such as:
> 
> while (PyArray_Check(base) && !PyArray_CHKFLAGS(base, NPY_OWNDATA)) {
>    base = PyArray_BASE(base);
> }
> 
> plus the possible error you underlined, plus the fact that this keeps a
> chain of zombies alive without reason.
> 
> Are there cases where the current behaviour is useful?

I don't see real merits in the current behavior over doing the chain up-
walk on view creation. I don't know if anything in view creation requires 
that the immediate base is alive afterwards, but that seems unlikely, so 
I believe there's no reason not to make this change.

Some (bad) code might be broken if this was changed, for example

>>> y = x[::-1]
>>> y.base is x

but in practice this is probably negligible.

-- 
Pauli Virtanen




More information about the NumPy-Discussion mailing list