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 下面是一个示例,说明如何处理最初是一维的数据(我使用的是随机值,如果是概率分

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

我想用python来做这件事。我对这门语言比较陌生,我想知道是否有一个函数可以帮助我做到这一点

任何帮助都将不胜感激


谢谢

要通过
m
矩阵在
numpy
中生成
n
,您可以将两个适当形状的数组相乘。如果数组
x
n
by
1
而数组
y
1
by
m
,则它们的产品
x*y
将是
n
by
m

下面是一个示例,说明如何处理最初是一维的数据(我使用的是随机值,如果是概率分布,则应该对其进行规范化,但对于示例来说,这并不重要):


带有
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]]