Cython error: Undeclared name not built in:array
cython, numpy, sage
Solution
Yeah, but you imported it as `np`, not importing `*` (which would be a bad idea anyway) and didn't do a regular Python import. (Sometimes you have to do both a `cimport` and `import`, see this SO question for an example.)
However, even after
import numpy as np
and using `np.array`, I still get some errors
ValueError: Buffer dtype mismatch, expected 'DTYPE' but got 'long'
So this solves your question, but isn't the whole story, and the things I tried didn't work to fix this new issue.
Problem
I am compiling this Cython code in Sage Cell Server and I get the following error. ``` undeclared name not builtin: array ``` It displays the same error in Sage Notebook. I think it is not recognizing numpy `array` but it is strange cause I have imported numpy already. ``` cython(''' cimport numpy as np ctypedef np.int DTYPE def computeDetCy(np.ndarray[DTYPE, ndim=2] matrix): return determ(matrix,len(matrix)) cdef inline int determ(np.ndarray[DTYPE, ndim=2] matrix, int n): cdef int det = 0 cdef int p=0 cdef int h cdef int k cdef int i=0 cdef int j=0 cdef np.ndarray[DTYPE, ndim=2] temp=np.zeros(4,4) if n == 1: return matrix[0][0] elif n == 2: return matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0] else: for p in range(0, n): h = 0 k = 0 for i in range(1, n): for j in range(0, n): if j==p: continue temp[h][k] = matrix[i][j] k+=1 if k ==(n-1): h+=1 k=0 det= det + matrix[0][p] * (-1)**p * determ(temp, n-1) return det computeDetCy(array([[13,42,43,22],[12,67,45,98],[23,91,18,54],[34,56,82,76]])) ''') ```