I also now note that the numpy C API includes a resize function (PyArray_Resize). If I typed these as `ndarray` rather than `object`, I could use it. I don't have a clear understanding of when the GIL is needed. Could I do without it for this operation?

I could also use the C functions for array creation. Because this certainly does reference counting, would I need to use the GIL?