微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Numba 与 numpy.random.binomial 的兼容性

如何解决Numba 与 numpy.random.binomial 的兼容性

我试图使用 numba 来加速我的代码的一部分,该部分根据成功概率数组生成伯努利随机变量数组。大致如下:

import numpy as np
from numba import njit

@njit
def Bernoulli(a,b,c):
    prob = np.array from some calculation to a,b and c
    accepted = np.random.binomial(1,prob)
    return accepted

Bernoulli(a,c)

但是,出现这个错误代码

There are 2 candidate implementations:
  - Of which 2 did not match due to:
  Overload in function 'Numpy_negative_binomial.generic': File: numba\core\typing\randomdecl.py: Line 171.
    With argument(s): '(int64,array(float64,1d,C))':
   No match for registered cases:
    * (int64,float64) -> int64

我理解这是因为当前的 numba 实现不支持成功概率数组作为 np.random.binomial 的参数。这样对吗?
如果是这样,此实现是否是解决问题的有效方法

@njit(parallel = True)
def Bernoulli(a,b and c
    accepted = np.zeros(N)
    for i in prange(N):
        accepted[i] = np.random.binomial(1,prob[i])
    return accepted

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。