Python中的联合概率分布

时间:2014-07-23 19:32:50

标签: python probability

我有两个离散的随机变量。让我们说A和B每个大小为Nx1。假设A有m个唯一值,B有n个唯一值。我想找到一个频率或概率分布的mxn矩阵。后来,我想绘制这个矩阵来显示分布。

我想在python中执行此操作。我是一个相对较新的语言,我想知道是否有一个功能可以帮助你做到这一点。

任何帮助都将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:2)

要在n中制作mnumpy矩阵,您可以将两个适当形状的数组相乘。如果数据x n 1 y而数组1 m x * y nm>>> import numpy as np >>> a = np.random.random(5) # n values >>> print(a) [ 0.884703 0.78476467 0.26084923 0.82228242 0.48263909] >>> b = np.random.random(8) # m values >>> print(b) [ 0.53982228 0.59494659 0.92725768 0.03275801 0.39763316 0.72638816 0.37634726 0.85483384] >>> matrix = a[:,None] * b[None,:] # n by m matrix >>> print(matrix) [[ 0.47758239 0.52635103 0.82034765 0.02898111 0.35178725 0.64263778 0.33295555 0.75627406] [ 0.42363345 0.46689307 0.72767907 0.02570733 0.31204846 0.57004376 0.29534404 0.6708434 ] [ 0.14081223 0.15519136 0.24187445 0.0085449 0.10372231 0.18947779 0.0981699 0.22298275] [ 0.44388637 0.48921412 0.76246768 0.02693634 0.32696676 0.59729621 0.30946374 0.70291484] [ 0.26053933 0.28714448 0.4475308 0.0158103 0.19191331 0.35058332 0.1816399 0.41257622]] None 1}} {{1}}。

以下是一个如何使用最初是一维的数据进行此操作的示例(我使用随机值,如果它是概率分布,那么它应该真正归一化,但对于这个例子并不重要):

{{1}}

使用{{1}}的切片告诉numpy在执行乘法之前为每个数组添加额外的维度。