Did I do something wrong or is it expected behavior ?
Try:
print (Z.view('f4'))[:50].base.base is Z # True print Z[:50].view('f4').base.base is Z # True
This weird behaviour is fixed in the just-released numpy 1.7. From the notes of the release:
The ``.base`` attribute on ndarrays, which is used on views to ensure that the underlying array owning the memory is not deallocated prematurely, now collapses out references when you have a view-of-a-view. For example::
a = np.arange(10) b = a[1:] c = b[1:]
In numpy 1.6, ``c.base`` is ``b``, and ``c.base.base`` is ``a``. In numpy 1.7, ``c.base`` is ``a``.
Jaime
-- (\__/) ( O.o) ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial.