summaryrefslogtreecommitdiff
path: root/docs/examples/userguide/memoryviews/custom_dtype.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/userguide/memoryviews/custom_dtype.pyx')
-rw-r--r--docs/examples/userguide/memoryviews/custom_dtype.pyx26
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