[Numpy-discussion] how does numpy handle views and garbage collection?
Wed Sep 30 09:10:58 CDT 2009
On Sep 30, 2009, at 6:43 AM, Chris Colbert wrote:
> Lets say I have function that applies a homogeneous transformation
> matrix to an Nx3 array of points using np.dot.
> since the matrix is 4x4 I have to add a 4 column of ones to the array
> so the function looks something like this:
> def foo():
> pts = np.column_stack((Xquad, Yquad, Zquad, np.ones(Zquad.shape)))
> transpts = np.dot(transmat, pts.T).T
> return transpts[:,:3]
> Since i'm returning just the view of the array, I imagine python
> doesnt garbage collect transpts once the function returns and falls
> out of scope (because numpy has increfed it in the view operation?).
> So in essence, I still have that whole column of ones hanging around
> wasting memory, is that about right?
Yes. You will have the entire underlying array sitting there until
the last view on it is deleted.
You can make return a copy explicitly using:
Then, the transpts array will be removed when the function returns.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion