小编CoA*_*eek的帖子

数值Python - 我如何使这成为一个ufunc?

NumPy的新手可能没有正确搜索,所以如果这是一个常见问题,我会采取肿块...

我正在研究一个问题,我需要计算相对较大数字的log(n!) - 即.为了大计算阶乘,所以我写了以下函数:

def log_fact(n):
    x = 0
    for i in range(1,n+1):
        x += log(i)
    return x
Run Code Online (Sandbox Code Playgroud)

现在问题是我想将此作为传递给curve_fit的函数的一部分:

def logfactfunc(x, a, b, c):
    return a*log_fact(x) + b*x + c

from scipy.optimize import curve_fit

curve_fit(logfactfunc, x, y)
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下错误:

File "./fit2.py", line 16, in log_fact
    for i in range(1,n+1):
TypeError: only length-1 arrays can be converted to Python scalars
Run Code Online (Sandbox Code Playgroud)

一点点搜索建议numpy.frompyfunc()将其转换为ufunc

curve_fit(np.frompyfunc(logfactfunc, 1, 1), data[k].step, data[k].sieve)

TypeError: <ufunc 'logfactfunc (vectorized)'> is not a Python function
Run Code Online (Sandbox Code Playgroud)

试过这个:

def logfactfunc(x, a, b, c):
    return …
Run Code Online (Sandbox Code Playgroud)

python numpy

4
推荐指数
1
解决办法
1419
查看次数

标签 统计

numpy ×1

python ×1