correct sizeof for ndarray

Hi folks, I noticed an unexpected behavior of itemsize for structures with offsets that are larger than that of a packed structure in memory. This matters when parsing in memory structures from C and some others (recently and HDF5/h5py detail got me for a bit). So what is the correct way to get "sizeof" a structure? AFAIK this is the size of the last item + it's offset. If this doesn't exist... shouldn't it? Thanks, Jason

On 10/20/2015 12:05 AM, Jason Newton wrote:
Hi Jason, The 'itemsize' attribute of a dtype object is probably what you're looking for. It gives the itemsize in bytes. "last item + it's offset" is not a reliable way to get the itemsize because "aligned" (and other) structures can have trailing padding, just like C structs: >>> dtype('i4,u1', align=True).itemsize 8 The documentation on all this is a little scattered right now, but there are hints in the array.dtypes reference page and the dtype docstring. Cheers, Allan

On 10/20/2015 12:05 AM, Jason Newton wrote:
Hi Jason, The 'itemsize' attribute of a dtype object is probably what you're looking for. It gives the itemsize in bytes. "last item + it's offset" is not a reliable way to get the itemsize because "aligned" (and other) structures can have trailing padding, just like C structs: >>> dtype('i4,u1', align=True).itemsize 8 The documentation on all this is a little scattered right now, but there are hints in the array.dtypes reference page and the dtype docstring. Cheers, Allan
participants (2)
-
Allan Haldane
-
Jason Newton