From: Sebastian H. <ha...@ms...> - 2003-03-07 19:26:04
|
Thanks, SO MUCH ... I almost went crazy yesterday - and was really desperate by the time I wrote that email. Somehow I newer needed that offset field until now. So: when I do the NA_InputArray call I get a "proper" C-array just that it does NOT necessarily start at NAimg->data but rather at NAimg->data + NAimg->byteoffset Again: thanks so much. BTW: Is there general interest in my SWIG typemaps. (SWIG is maybe the easiest way to wrap C/C++ functions (and classes) into Python (and/or Perl, Java, Ruby,...) ? I think especially for numerical stuff, that "link" in of interest. Sebastian ----- Original Message ----- From: "Francesc Alted" <fa...@op...> To: "Sebastian Haase" <ha...@ms...>; <Num...@li...> Sent: Thursday, March 06, 2003 9:40 PM Subject: Re: [Numpy-discussion] Please help - pointer to slice A Divendres 07 Març 2003 01:42, Sebastian Haase va escriure: > if I try to debug this by doing: > for z in range(nz): > print repr(arr[z]._data) > > that also tells be that python / numarray thinks all slices are located at > the same address, that is: > every slice looks just like the full array. You can access the slices by taking into account the byte offset attribute. Look at the next example: In [20]: a=numarray.arange(100, shape=(10,10)) In [21]: a._data Out[21]: <memory at 083e58e8 with size:400 held by object at 083e58d0> In [22]: a[1]._data Out[22]: <memory at 083e58e8 with size:400 held by object at 083e58d0> as you already know, both memory buffers point to the same address. I guess this is implemented in that way so as to not copy data unnecessarily. now, look at: In [23]: a._byteoffset Out[23]: 0 In [24]: a[1]._byteoffset Out[24]: 40 So, you can know where the data actually starts by looking at the _byteoffset property. In fact, you should always look at it in order to get proper results!. In C, you can access to this information by looking at the byteoffset field in the PyArrayObject struct (look at chapter 10 in the User's Manual). Hope that helps, -- Francesc Alted |