Python SciPy&x27;s ctypes Fibonacci示例无法使用“运行”;数组的数据类型必须为int64“;错误

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

我试图复制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 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
这就解决了问题

编辑:我不知道这为什么能解决这个问题,我只是尝试了一些随机的东西,结果成功了。我很高兴知道为什么会这样


然而,我希望至少这个解决方案能帮助其他面临同样问题的人。

也许你能解释一下问题的实质以及为什么需要改变