我要在MatLab和Python之间传输代码.但是,当我使用scipy.special.gammainc时,我得到的值与在MatLab中使用gammainc时不同.

我的Python代码是:

from scipy.special import gammainc                                        
gammainc([1, 2, 3, 4], 5)                                                
array([0.99326205, 0.95957232, 0.87534798, 0.73497408])

然而,在MatLab中,我有:

gammainc([1,2,3,4],5,'lower')                                      
[0.00365984682734371, 0.0526530173437111, 0.184736755476228, 0.371163064820127]

我正在try 更改我的Python版本,以使我获得与MatLab代码相同的版本.相反,我try 了:

from scipy.special import gammaincc                                   
gammaincc([1, 2, 3, 4], 5)                                               
array([0.00673795, 0.04042768, 0.12465202, 0.26502592])

这是更接近,但它仍然不是我正在寻找的.

推荐答案

您的代码有两个问题:

  • 与通常的mathematical notation相比,MatLab的gammainc函数预期输入参数的顺序是相反的.所以它先求积分极限,然后求指数.
  • Scipy的gammaincc是上不完全Gamma函数,而不是下不完全Gamma函数.对于较低版本,您需要使用gammainc.

因此,要使用Scipy在Python中重现Matlab的结果,请使用

from scipy.special import gammainc
print(gammainc(5, [1, 2, 3, 4]))

gives

[0.00365985 0.05265302 0.18473676 0.37116306]

Python相关问答推荐

为什么判断pd.DataFrame的值与判断pd.Series的值存在差异(如果索引中有值)?

正在设置字段.需要为假,因为错误列表索引必须是整数或切片,而不是字符串

Django关于UniqueBindition的更新

替换字符串中的点/逗号,以便可以将其转换为浮动

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

创建带有二维码的Flask应用程序,可重定向到特定端点

将轨迹优化问题描述为NLP.如何用Gekko解决这个问题?当前面临异常:@错误:最大方程长度错误

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

什么相当于pytorch中的numpy累积ufunc

将图像拖到另一个图像

计算组中唯一值的数量

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

python中字符串的条件替换

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

不能使用Gekko方程'

如何启动下载并在不击中磁盘的情况下呈现响应?

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

Python中的变量每次增加超过1

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值