要通过numpy中的m矩阵生成{},可以将两个适当形状的数组相乘。如果数组x是1的n,而数组y是{},则它们的乘积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的切片告诉numpy在执行乘法之前向每个数组添加一个额外的维度。在