diff options
Diffstat (limited to 'docs/examples/userguide/memoryviews/custom_dtype.pyx')
-rw-r--r-- | docs/examples/userguide/memoryviews/custom_dtype.pyx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/docs/examples/userguide/memoryviews/custom_dtype.pyx b/docs/examples/userguide/memoryviews/custom_dtype.pyx new file mode 100644 index 000000000..d54d7bbc4 --- /dev/null +++ b/docs/examples/userguide/memoryviews/custom_dtype.pyx @@ -0,0 +1,26 @@ +import numpy as np + +CUSTOM_DTYPE = np.dtype([ + ('x', np.uint8), + ('y', np.float32), +]) + +a = np.zeros(100, dtype=CUSTOM_DTYPE) + +cdef packed struct custom_dtype_struct: + # The struct needs to be packed since by default numpy dtypes aren't + # aligned + unsigned char x + float y + +def sum(custom_dtype_struct [:] a): + + cdef: + unsigned char sum_x = 0 + float sum_y = 0. + + for i in range(a.shape[0]): + sum_x += a[i].x + sum_y += a[i].y + + return sum_x, sum_y |