首页 > 解决方案 > 如何计算两个序列的联合概率?

问题描述

给定两个字母列表:

x = [A, B, D, A, D, D, ...]
y = [D, F, C, C, B, B, ...]

如何计算概率p(x_i = B, x_(i+1) = D, y_i = F),其中i表示相应列表中的通用索引?

标签: pythonprobability

解决方案


使用您提供的数组,您可以使用 numpy 数组为方便起见,如

import numpy as np
N=len(x)
xi=(np.array(x)=='B').astype(int)
xip=np.roll((np.array(x)=='D').astype(int),-1) # shift array one forward, and convert boolean to integer (True=1, False=0)
yi=(np.array(y)=='F').astype(int)
prob=(xi+xip+yi==3).astype(int)[0:N-1].sum()/(N-1)

其中 prob 是所需的概率。


推荐阅读