[Numpy-discussion] frombuffer alignment for ctypes.Structure array

David Cournapeau david at ar.media.kyoto-u.ac.jp
Fri Apr 10 04:28:23 EDT 2009


Roland Schulz wrote:
> The is no align or aligned option to frombuffer. What is the best way
> to tell numpy to align the data as the C-struct/ctypes.Stucture array is?

You could add a 'fake' field in between to get the right alignment, maybe ?

import numpy as N
from ctypes import *

class C(Structure):
    _fields_=[("a",c_int),("b",c_short), ('', c_short)]

c=(C*2)()
_ctypes_to_numpy = {c_short : N.int16,c_int : N.int32}
ty = N.dtype([(x,_ctypes_to_numpy[y]) for x,y in C._fields_])
x=N.frombuffer(c,ty)

You may use a different type if you need another alignment, or using
something like 'VN' in the dtype, e.g.:

a = N.dtype([('a', np.int), ('b', np.short), ('', 'V2')])

David



More information about the NumPy-Discussion mailing list