Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有来自scipy.stats的'norm'方法的cythonized版本?_Python_Scipy_Cython - Fatal编程技术网

Python 是否有来自scipy.stats的'norm'方法的cythonized版本?

Python 是否有来自scipy.stats的'norm'方法的cythonized版本?,python,scipy,cython,Python,Scipy,Cython,我在scipy.stats中讨论了连续RV的主要公共方法: 具体来说,, 来自scipy.stats导入规范 然后使用 norm.ppf或norm.pdf 链接: 使用cython是否有机会在norm.ppf()或norm.pdf()上进行速度优化?或者它已经优化了还是不值得用cython包装?您在中检查了代码吗 …/scipy/stats/distributions.py 看起来norm\u pdf最终使用 _norm_pdf_C = math.sqrt(2*pi) _norm_pdf_log

我在scipy.stats中讨论了连续RV的主要公共方法:

具体来说,,
来自scipy.stats导入规范
然后使用

norm.ppf
norm.pdf

链接:


使用cython是否有机会在norm.ppf()或norm.pdf()上进行速度优化?或者它已经优化了还是不值得用cython包装?

您在中检查了代码吗

…/scipy/stats/distributions.py

看起来
norm\u pdf
最终使用

_norm_pdf_C = math.sqrt(2*pi)
_norm_pdf_logC = math.log(_norm_pdf_C)

def _norm_pdf(x):
    return exp(-x**2/2.0) / _norm_pdf_C
因为它不涉及通过numpy数组的循环,所以它看起来不像是
cython
speedup的主要候选。你会用不同的方式写吗


哎呀,对不起。您询问的函数如下:

def pdf(self,x,*args,**kwds):
    args, loc, scale = self._parse_args(*args, **kwds)
    x,loc,scale = map(asarray,(x,loc,scale))
    args = tuple(map(asarray,args))
    x = asarray((x-loc)*1.0/scale)
    cond0 = self._argcheck(*args) & (scale > 0)
    cond1 = (scale > 0) & (x >= self.a) & (x <= self.b)
    cond = cond0 & cond1
    output = zeros(shape(cond),'d')
    putmask(output,(1-cond0)+np.isnan(x),self.badvalue)
    if any(cond):
        goodargs = argsreduce(cond, *((x,)+args+(scale,)))
        scale, goodargs = goodargs[-1], goodargs[:-1]
        place(output,cond,self._pdf(*goodargs) / scale)
    if output.ndim == 0:
        return output[()]
    return output
def pdf(self,x,*args,**kwds):
args,loc,scale=self._parse_args(*args,**kwds)
x、 位置,比例尺=地图(方阵,(x,位置,比例尺))
args=元组(映射(asarray,args))
x=方阵((x-loc)*1.0/刻度)
cond0=自身参数检查(*参数)和(比例>0)

cond1=(scale>0)和(x>=self.a)和(x我所指的代码实际上在scipy 0.15.1的scipy/stats/_distn_基础结构中。因此,scipy.stats的
源导入norm
,然后导入
norm.ppf()
是该私有模块的第1785-1828行。对于您关于主要候选对象的问题,我会使用libc.math cimport exp、sqrt、log中的
,它们是python内置数学的预编译C版本