我有两个离散的随机变量。让我们说A和B每个大小为Nx1。假设A有m个唯一值,B有n个唯一值。我想找到一个频率或概率分布的mxn矩阵。后来,我想绘制这个矩阵来显示分布。
我想在python中执行此操作。我是一个相对较新的语言,我想知道是否有一个功能可以帮助你做到这一点。
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:2)
要在n
中制作m
个numpy
矩阵,您可以将两个适当形状的数组相乘。如果数据x
n
1
y
而数组1
m
x * y
n
,m
将>>> 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在执行乘法之前为每个数组添加额外的维度。