Python 为什么Scipy rv_离散始终返回1
我试图形成一个随机变量的分布。其中反应发生的概率为: 探针(Rj火焰)=aj/a0 aj=倾向函数,描述给定时间段内单个反应发生的概率 a0=系统中所有反应的所有倾向函数之和 现在我有一个函数,它返回系统中每个反应的倾向函数数组,它输出:Python 为什么Scipy rv_离散始终返回1,python,arrays,scipy,statistics,Python,Arrays,Scipy,Statistics,我试图形成一个随机变量的分布。其中反应发生的概率为: 探针(Rj火焰)=aj/a0 aj=倾向函数,描述给定时间段内单个反应发生的概率 a0=系统中所有反应的所有倾向函数之和 现在我有一个函数,它返回系统中每个反应的倾向函数数组,它输出: [32. 0. 0.] 然后我用a0=总和(倾向)来计算a0。然后是第二个函数: def prob_rxn_火灾(倾向性,a0): prob=倾向性/a0 返回问题 为了计算aj/a0,将此函数的输出分配给变量:rxn_概率。 在我的系统中有三种反应,
[32. 0. 0.]
然后我用a0=总和(倾向)来计算a0。然后是第二个函数:
def prob_rxn_火灾(倾向性,a0):
prob=倾向性/a0
返回问题
为了计算aj/a0,将此函数的输出分配给变量:rxn_概率。
在我的系统中有三种反应,我现在尝试使用scipy.stats.rv_离散从分布中采样
我将系统中的反应数存储在数组中:
num_rxn = np.arange(1, rxn_probability.size + 1).reshape(rxn_probability.shape)
它的形状和大小总是与rxn_概率数组相匹配
我现在的代码是:
j = stats.rv_discrete(name="Reaction index", values=(num_rxn, rxn_probability)).rvs()
但是输出总是1,我不确定这是否正确,如果不正确,为什么不正确
干杯!您有以下阵列:
将numpy导入为np
rxn_概率=np.数组([1,0,0])
num_rxn=np.arange(1,rxn_probability.size+1)。重塑(rxn_probability.shape)
num_rxn
数组([1,2,3])
因此,当使用rv_discrete
和值=(num_rxn,rxn_probability)
时,您基本上是说,对于probability one,它应该选择num_rxn
的第0个元素
现在,如果您尝试不同的值,让我们假设values=(num_rxn,[.8,.1,.1])
结果将是:
- 1有可能
- 2有可能
- 3.有可能
如果想要均匀分布,可以指定
值=(num_rxn,[1/3]*num_rxn.size)
IIUC您有以下数组:
将numpy导入为np
rxn_概率=np.数组([1,0,0])
num_rxn=np.arange(1,rxn_probability.size+1)。重塑(rxn_probability.shape)
num_rxn
数组([1,2,3])
因此,当使用rv_discrete
和值=(num_rxn,rxn_probability)
时,您基本上是说,对于probability one,它应该选择num_rxn
的第0个元素
现在,如果您尝试不同的值,让我们假设values=(num_rxn,[.8,.1,.1])
结果将是:
- 1有可能
- 2有可能
- 3.有可能
值=(num_rxn,[1/3]*num_rxn.size)