Python binom.pmf仅返回零

Python binom.pmf仅返回零,python,scipy,Python,Scipy,代码: 出于某种原因,在每次迭代之后,p[i]等于零。然而,当我手动键入(例如)binom.pmf(10,10,19/20)时,我得到了一个非零的答案。这里有什么问题 这似乎发生在函数调用中对binom.pmf的任何调用中。使用p=np.arange(0,n+1)使用整数数组0,…,n初始化p。这使得binom.pmf(…)在分配给p[i]时转换为整数。解决方案是使p成为一个浮点数组np.zeros()会创建一个浮点数组。同样的问题也适用于利润 将其放入代码中看起来如下所示: 从scipy.st

代码:

出于某种原因,在每次迭代之后,
p[i]
等于零。然而,当我手动键入(例如)
binom.pmf(10,10,19/20)
时,我得到了一个非零的答案。这里有什么问题

这似乎发生在函数调用中对
binom.pmf
的任何调用中。

使用
p=np.arange(0,n+1)
使用整数数组
0,…,n
初始化
p
。这使得
binom.pmf(…)
在分配给
p[i]
时转换为整数。解决方案是使
p
成为一个浮点数组<默认情况下,code>np.zeros()会创建一个浮点数组。同样的问题也适用于
利润

将其放入代码中看起来如下所示:

从scipy.stats导入binom
将numpy作为np导入
def预期利润(n):
n=10
总数=0
X=np.arange(0,n+1)
p=np.零(n+1,dtype=float)
利润=np.零(n+1,数据类型=浮动)
对于范围(1,n+1)内的i:
p[i]=binom.pmf(X[i],n,19/20)
如果X[i]>100:
利润[i]=50*n-60*(X[i]-100)
其他:
利润[i]=50*n
总额+=利润[i]*p[i]
预期利润(10)
使用
p=np.arange(0,n+1)
使用整数数组
0,…,n
初始化
p
。这使得
binom.pmf(…)
在分配给
p[i]
时转换为整数。解决方案是使
p
成为一个浮点数组<默认情况下,code>np.zeros()
会创建一个浮点数组。同样的问题也适用于
利润

将其放入代码中看起来如下所示:

从scipy.stats导入binom
将numpy作为np导入
def预期利润(n):
n=10
总数=0
X=np.arange(0,n+1)
p=np.零(n+1,dtype=float)
利润=np.零(n+1,数据类型=浮动)
对于范围(1,n+1)内的i:
p[i]=binom.pmf(X[i],n,19/20)
如果X[i]>100:
利润[i]=50*n-60*(X[i]-100)
其他:
利润[i]=50*n
总额+=利润[i]*p[i]
预期利润(10)
def expected_profit(n):
    total = 0
    X = np.arange(0,n+1)
    p = np.arange(0,n+1)
    profit = np.arange(0,n+1)
    for i in list(range(1,n+1)):
        print("X_i:", X[i])
        p[i] = binom.pmf(X[i],n,19/20)
        print(p[i])
        if X[i] > 100:
            profit[i] = 50*n-60*(X[i]-100)
        else:
            profit[i] = 50*n
        total += profit[i]*p[i]
    return total
expected_profit(10)
>>>0