首页 > 解决方案 > Python:Scipy cimport 与 Cython

问题描述

我看了很久,最后决定把这个问题放在这里,因为它似乎缺乏关于那个特定案例的信息。这是我的问题:我的代码有点慢,所以我求助于Cython来加速。它使用scipy.special jv函数,我发现有与 Cython 兼容的版本。参考:https ://docs.scipy.org/doc/scipy/reference/special.cython_special.html

但是在尝试使用该功能时我无法使其工作。这是一个最小的代码。

from scipy.special.cython_special cimport jv as jvCython

cdef complex128_t[:] A = jvCython(1,2)

我收到错误:无效使用融合类型,类型不能专门化

看起来 ctype 定义在某些时候存在问题,但即使我使用链接中显示的签名,我也会得到相同的错误。

有人可以解释一下什么是融合类型以及为什么它不起作用?

非常感谢

标签: pythonscipycython

解决方案


我认为当你通过double两个. 如果你这样做,它可能会起作用double complexint

a = jv(1., 2.)

(即添加小数点,以便它识别输入是double)。如果您想要复杂的版本,请输入第二个数字2. + 0.j

输出是标量,而不是内存视图,所以我不知道你为什么这样输入A,但这是一个单独的问题。


推荐阅读