Python中的联合概率分布
我有两个离散的随机变量。假设A和B的尺寸均为Nx1。假设A有m个唯一值,B有n个唯一值。我想找到它们的频率或概率分布的mxn矩阵。稍后,我想绘制这个矩阵来显示分布 我想用python来做这件事。我对这门语言比较陌生,我想知道是否有一个函数可以帮助我做到这一点 任何帮助都将不胜感激Python中的联合概率分布,python,probability,Python,Probability,我有两个离散的随机变量。假设A和B的尺寸均为Nx1。假设A有m个唯一值,B有n个唯一值。我想找到它们的频率或概率分布的mxn矩阵。稍后,我想绘制这个矩阵来显示分布 我想用python来做这件事。我对这门语言比较陌生,我想知道是否有一个函数可以帮助我做到这一点 任何帮助都将不胜感激 谢谢要通过m矩阵在numpy中生成n,您可以将两个适当形状的数组相乘。如果数组x是nby1而数组y是1bym,则它们的产品x*y将是nbym 下面是一个示例,说明如何处理最初是一维的数据(我使用的是随机值,如果是概率分
谢谢要通过
m
矩阵在numpy
中生成n
,您可以将两个适当形状的数组相乘。如果数组x
是n
by1
而数组y
是1
bym
,则它们的产品x*y
将是n
bym
下面是一个示例,说明如何处理最初是一维的数据(我使用的是随机值,如果是概率分布,则应该对其进行规范化,但对于示例来说,这并不重要):
带有
None
的切片告诉numpy在执行乘法之前为每个数组添加一个额外维度。您如何描述A
和B
概率分布?如果您使用的是numpy数组之类的东西,那么查找组合分布只需将广播规则应用于乘法即可。如果您使用的是更原始的Python类型(如列表或字典),则只需要多做一点工作,可能是在列表或字典理解中。它们以序列形式存储。然后可以放入numpy数组中。你向乘法广播规则是什么意思?
>>> 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]]