1# tag: numpy_old 2 3cimport numpy as np 4cimport cython 5 6import numpy as py_numpy 7 8__doc__ = u""" 9 10 >>> test_record_subarray() 11 12""" 13 14def test_record_subarray(): 15 cdef np.ndarray x = py_numpy.zeros((2,2), 16 dtype=[('a', py_numpy.int32), 17 ('b', py_numpy.float64, (3, 3))]) 18 cdef np.dtype descr = x.dtype 19 cdef np.dtype a_descr = descr.fields['a'][0] 20 cdef np.dtype b_descr = descr.fields['b'][0] 21 22 # Make sure the dtype looks like we expect 23 assert descr.fields == {'a': (py_numpy.dtype('int32'), 0), 24 'b': (py_numpy.dtype(('=f8', (3, 3))), 4)}, descr.fields 25 26 # Make sure that HASSUBARRAY is working 27 assert not np.PyDataType_HASSUBARRAY(descr) 28 assert not np.PyDataType_HASSUBARRAY(a_descr) 29 assert np.PyDataType_HASSUBARRAY(b_descr) 30 31 # Make sure the direct field access works 32 assert <tuple>b_descr.subarray.shape == (3, 3), <tuple>b_descr.subarray.shape 33 34 # Make sure the safe high-level helper function works 35 assert np.PyDataType_SHAPE(descr) == (), np.PyDataType_SHAPE(descr) 36 assert np.PyDataType_SHAPE(a_descr) == (), np.PyDataType_SHAPE(a_descr) 37 assert np.PyDataType_SHAPE(b_descr) == (3, 3), np.PyDataType_SHAPE(b_descr) 38