On 4/22/07, Travis Oliphant <[EMAIL PROTECTED]> wrote: > Bill Baxter wrote: > > What's the right way to make a new numpy array that's a copy of some C data? > > > What do you mean by /copies/ the void * data pointer for you? Do you > mean the API would > > 1) Create new memory for the array > 2) Copy the data from another void * pointer to the memory just created > for the new array?
Yes. > If that is what you mean, then you are right there is no such API. I'm > not sure that there needs to be one. It is a two-liner using memcpy. Ok, I see. That's not too hard. Though as Sebastian said below it would be a little trickier if I needed to do a transpose or something at the same time. I guess for those cases it should be possible to make a temporary PyArrayObject with PyArray_NewFromDescr that wraps the memory and then do a PyArray_GETCONTIGUOUS? > > A related question -- I'm only trying to copy in order to save myself > > a little hassle regarding how to clean up the allocated chunks. If > > there's some simple way to trigger a particular deallocation function > > to be called at the right time, then that would be the ideal, really. > > > No, there is no place to store that information in NumPy. Either the > ndarray dealloc function frees the memory it created or it doesn't free > any memory. I think the best thing to do in this case would be to > create a memory object wrapping the pointer and then point the ndarray > to it as the source of memory. Hmm. Sounds a little over my head. I'll stick with copying for now. --bb _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion