Hi!

I've been trying to get the simple Cython+NumPy example from Robert  
Bradshaw's slides to work:

> # footest.pyx

> cimport numpy
>
> def sum(x):
>     cdef numpy.ndarray[int, ndim=1] arr = x
>     cdef int i, s = 0
>     for i in range(arr.shape[0]):
>         s += arr[i]
>     return s

I get it to compile/link, but then I try to actually use it, with the  
following code:

> import footest
> import numpy as np
>
> a = np.arange(1000, dtype=np.int)
> print footest.sum(a)

The np.int shouldn't be necessary -- and I started without it -- but  
even *with* it, I get the following error:

>   File "footest.pyx", line 4, in footest.sum (footest.c:392)
>     cdef numpy.ndarray[int, ndim=1] arr = x
> ValueError: Buffer dtype mismatch (expected int, got long)

In other words, there seems to have been a conversion from int to  
long. If I try to print out repr(x), it seems to have a dtype of  
int32. If I change the offending line from the pyx file to

>     cdef numpy.ndarray[long, ndim=1] arr = x


it suddenly works.

I'm currently using Cython 0.10.2 with Python 2.5.2 and NumPy 1.2.1 in  
Mac OS X (Leopard).

Am I missing something obvious? Any ideas?

-- 
Magnus Lie Hetland
http://hetland.org


_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to