cython-gsl库包装器

时间:2014-11-04 00:38:16

标签: python-2.7 cython

我想使用gnu库中的插值函数可以有人建议我怎么做。这就是我一直在尝试的。

 import numpy as np
 cdef extern from "gsl/gsl_spline.h":
 int gsl_spline_init(gsl_spline * spline, const double xa[], const double ya[], size_t size)
 def cs(gsl_spline * spline,xa = np.ndarray(double_t ,ndim=1) ,ya = np.ndarray(double_t ,ndim=1) , int size):   
 s = gsl_spline_init(gsl_spline * spline, dnp.ndarray(double_t ,ndim=1) xa, np.ndarray(double_t ,ndim=1) ya, int size)
 return s

但在构建文件时出现以下错误。

 def cs(gsl_spline * spline,xa = np.ndarray(double_t ,ndim=1) ,ya = np.ndarray(double_t ,ndim=1) , int size):   
s = gsl_spline_init(gsl_spline * spline, dnp.ndarray(double_t ,ndim=1) xa, np.ndarray(double_t ,ndim=1) ya, int size)                                  ^


testone.pyx:14:75: Expected ')', found 'xa'
building 'pang' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes    -fPIC -I/home/sulabh/.local/lib/python2.7/site-packages/numpy/core/include -I/home/sulabh/include/ -I/usr/include/python2.7 -c testone.c -o build/temp.linux-x86_64-2.7/testone.o
testone.c:1:2: error: #error Do not use this file, it is the result of a failed Cython compilation.
error: command 'gcc' failed with exit status 1

1 个答案:

答案 0 :(得分:0)

这里有一些问题。 我会给你一些关于从哪里开始的想法。

首先,您将类型声明放在函数调用中。 他们应该进入功能签名。 您看到的错误是因为在函数调用中放置类型声明不是正确的语法。

接下来,您在类型声明中使用括号作为NumPy数组,这些数组作为函数的参数传递。 你应该使用方括号。 例如,您有dnp.ndarray(double_t ,ndim=1)。 这应该类似np.ndarray[double,ndim=1](确切的名称取决于你如何使用ndarray类)。

对于类型的清晰声明,您可能需要考虑Cython的typed memoryviews