Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Change numeric demo to numpy demo using new features, update setup.py.

  • Loading branch information...
commit b18d94e38f99ba484a3eb81dfd683f5645dfc37f 1 parent 31fe44b
@robertwb robertwb authored
Showing with 21 additions and 54 deletions.
  1. +0 −39 Demos/numeric_demo.pyx
  2. +9 −0 Demos/numpy_demo.pyx
  3. +12 −15 Demos/setup.py
View
39 Demos/numeric_demo.pyx
@@ -1,39 +0,0 @@
-#
-# This example demonstrates how to access the internals
-# of a Numeric array object.
-#
-
-cdef extern from "Numeric/arrayobject.h":
-
- struct PyArray_Descr:
- int type_num, elsize
- char type
-
- ctypedef class Numeric.ArrayType [object PyArrayObject]:
- cdef char *data
- cdef int nd
- cdef int *dimensions, *strides
- cdef object base
- cdef PyArray_Descr *descr
- cdef int flags
-
-def print_2d_array(ArrayType a):
- print "Type:", chr(a.descr.type)
- if chr(a.descr.type) <> "f":
- raise TypeError("Float array required")
- if a.nd <> 2:
- raise ValueError("2 dimensional array required")
- cdef int nrows, ncols
- cdef float *elems, x
- nrows = a.dimensions[0]
- ncols = a.dimensions[1]
- elems = <float *>a.data
- hyphen = "-"
- divider = ("+" + 10 * hyphen) * ncols + "+"
- print divider
- for row in range(nrows):
- for col in range(ncols):
- x = elems[row * ncols + col]
- print "| %8f" % x,
- print "|"
- print divider
View
9 Demos/numpy_demo.pyx
@@ -0,0 +1,9 @@
+cimport numpy
+import numpy
+
+def sum_of_squares(numpy.ndarray[double, ndim=1] arr):
+ cdef long N = arr.shape[0]
+ cdef double ss = 0
+ for i in range(N):
+ ss += arr[i]**2
+ return ss
View
27 Demos/setup.py
@@ -1,26 +1,23 @@
-import glob
+# Run as:
+# python setup.py build_ext --inplace
from distutils.core import setup
from distutils.extension import Extension
-from Cython.Distutils import build_ext
+from Cython.Build import cythonize
+ext_modules = cythonize("*.pyx", exclude="numpy_*.pyx")
+
+# Only compile the following if numpy is installed.
try:
from numpy.distutils.misc_util import get_numpy_include_dirs
- numpy_include_dirs = get_numpy_include_dirs()
-except:
- numpy_include_dirs = []
-
-ext_modules=[
- Extension("primes", ["primes.pyx"]),
- Extension("spam", ["spam.pyx"]),
-]
-
-for file in glob.glob("*.pyx"):
- if file != "numeric_demo.pyx":
- ext_modules.append(Extension(file[:-4], [file], include_dirs = numpy_include_dirs))
+ numpy_demo = Extension("*",
+ ["numpy_*.pyx"],
+ include_dirs=get_numpy_include_dirs())
+ ext_modules.extend(cythonize(numpy_demo))
+except ImportError:
+ pass
setup(
name = 'Demos',
- cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules,
)
Please sign in to comment.
Something went wrong with that request. Please try again.