আমি এখানে সিথন ব্যবহার করে উত্তরটি দ্রুত করার চেষ্টা করছি । আমি কোডটি সংকলন করার চেষ্টা করব ( cygwinccompiler.py
হ্যাকটি এখানে ব্যাখ্যা করার পরে ), তবে একটি fatal error: numpy/arrayobject.h: No such file or directory...compilation terminated
ত্রুটি পান। আমার কোড, বা সিথনের সাথে কিছু রহস্যজনক সূক্ষ্মতা আছে কিনা তা যদি কেউ আমাকে বলতে পারেন?
নীচে আমার কোড দেওয়া আছে।
import numpy as np
import scipy as sp
cimport numpy as np
cimport cython
cdef inline np.ndarray[np.int, ndim=1] fbincount(np.ndarray[np.int_t, ndim=1] x):
cdef int m = np.amax(x)+1
cdef int n = x.size
cdef unsigned int i
cdef np.ndarray[np.int_t, ndim=1] c = np.zeros(m, dtype=np.int)
for i in xrange(n):
c[<unsigned int>x[i]] += 1
return c
cdef packed struct Point:
np.float64_t f0, f1
@cython.boundscheck(False)
def sparsemaker(np.ndarray[np.float_t, ndim=2] X not None,
np.ndarray[np.float_t, ndim=2] Y not None,
np.ndarray[np.float_t, ndim=2] Z not None):
cdef np.ndarray[np.float64_t, ndim=1] counts, factor
cdef np.ndarray[np.int_t, ndim=1] row, col, repeats
cdef np.ndarray[Point] indices
cdef int x_, y_
_, row = np.unique(X, return_inverse=True); x_ = _.size
_, col = np.unique(Y, return_inverse=True); y_ = _.size
indices = np.rec.fromarrays([row,col])
_, repeats = np.unique(indices, return_inverse=True)
counts = 1. / fbincount(repeats)
Z.flat *= counts.take(repeats)
return sp.sparse.csr_matrix((Z.flat,(row,col)), shape=(x_, y_)).toarray()