您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python / Numba:scipy.special.gammainc()出现未知属性错误

Python / Numba:scipy.special.gammainc()出现未知属性错误

问题在于这gammainc不是Numba固有的一小部分函数(请参阅http://numba.pydata.org/numba- doc/dev/reference/numpysupported.html)-实际上没有的功能。不幸的是,这意味着您不能在“ nopython”模式下使用它- 它只需要将其视为普通的python函数调用即可。

如果删除nopython=True,它应该可以工作。但是,这并不十分令人满意,因为它可能会更慢。没有看到您的代码,很难知道确切的建议。但是,通常:

gammainc即使没有nopython,循环(不包含)的速度也会加快。

gammainc一个“ ufunc”,这意味着它可以一次轻松地应用于整个阵列,并且无论如何应该快速运行。

您可以致电func.inspect_types()查看它是否可以编译。

作为一个简单的例子:

from scipy.special import gammainc
import numba as nb
import numpy as np

@nb.jit # note - no "nopython"
def f(x):
  for n in range(x.shape[0]):
    x[n] += 1
  y = gammainc(x,2.5)
  for n in range(y.shape[0]):
    y[n] -= 1
  return y

f(np.linspace(0,20)) # forces it to be JIT'd and outputs an array

然后f.inspect_types()将这两个循环标识为“提升循环”,这意味着它们将被准时化并快速运行。与的位gammainc不是JIT’d,而是立即应用于整个数组,因此也应该很快。

python 2022/1/1 18:25:49 有166人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶