Python SciPy&x27;s ctypes Fibonacci示例无法使用“运行”;数组的数据类型必须为int64“;错误
我试图复制SciPy烹饪书的例子 我正在按照网站上给出的简单说明进行操作,我发现了下面的错误 知道出了什么问题吗?我怎样才能使Python SciPy&x27;s ctypes Fibonacci示例无法使用“运行”;数组的数据类型必须为int64“;错误,python,c,numpy,scipy,ctypes,Python,C,Numpy,Scipy,Ctypes,我试图复制SciPy烹饪书的例子 我正在按照网站上给出的简单说明进行操作,我发现了下面的错误 知道出了什么问题吗?我怎样才能使fibseries工作 >>> fb.fib(8) 13 >>> fb.fibseries([1,2,3]) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "fibonacci.py", line 3
fibseries
工作
>>> fb.fib(8)
13
>>> fb.fibseries([1,2,3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "fibonacci.py", line 38, in fibseries
_libfibonacci.fibseries(b, len(b), result)
ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>: array must have data type int64
fb.fib(8)
13
>>>fb.fibseries([1,2,3])
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
fibonacci.py文件,第38行,在fibonacci系列中
_fibonacci.fibseries(b,len(b),result)
ctypes.ArgumentError:参数1::数组的数据类型必须为int64
我正在运行Python 2.7.6。必须在第21-22行修改代码,如下所示:
_libfibonacci.fibseries.argtypes = [nm.ctypeslib.ndpointer(dtype = nm.intc),\
ct.c_int,\
nm.ctypeslib.ndpointer(dtype = nm.intc)]
原文:
_libfibonacci.fibseries.argtypes = [nm.ctypeslib.ndpointer(dtype = nm.int),\
ct.c_int,\
nm.ctypeslib.ndpointer(dtype = nm.int)]
_libfibonacci.fibseries.restype = ct.c_void_p
这就解决了问题
编辑:我不知道这为什么能解决这个问题,我只是尝试了一些随机的东西,结果成功了。我很高兴知道为什么会这样
然而,我希望至少这个解决方案能帮助其他面临同样问题的人。也许你能解释一下问题的实质以及为什么需要改变