You can specify the alignment requirement in the dtype.
In [9]: a = np.zeros(4, dtype= np.dtype([('x', '<f8'), ('y', '<i4')], align=False))
In [10]: a.data
Out[10]: <read-write buffer for 0x2f94440, size 48, offset 0 at 0x2f8caf0>
In [11]: a = np.zeros(4, dtype=np.dtype([('x', '<f8'), ('y', '<i4')], align=True))
In [12]: a.data
Out[12]: <read-write buffer for 0x2f94030, size 64, offset 0 at 0x2f8c5b0>
Note the difference in size. For structured types, the alignment flag was misleading in previous versions of Numpy, the requirement is now 16 bytes for strings and structured types in order to make things work correctly on SPARC. Julian Taylor gives a more extended explanation at http://article.gmane.org/gmane.comp.python.numeric.general/59123