gpt4 book ai didi

python - 有效地计算转换矩阵 (m*m) * (n*n) 的逐元素乘积以给出 (mn*mn) 矩阵

转载 作者:太空狗 更新时间:2023-10-29 22:27:05 28 4
gpt4 key购买 nike

分别考虑形状为 (m,m) 和 (n,n) 的输入矩阵 X 和 Y。作为输出,我们需要给出一个 (mn,mn) 形状矩阵,使其与两个矩阵中的相应条目相乘。这两个矩阵 X 和 Y 表示转移矩阵。可以采用以下示例来说明所需的输出。其中,X为3*3矩阵,Y为2*2矩阵。

Matrix X
--------------
x1 x2 x3
x1| a b c
x2| d e f
x3| g h i

Matrix Y
--------------
y1 y2
y1| j k
y2| l m

Matrix Z (Output)
----------------------------------------
x1y1 x1y2 x2y1 x2y2 x3y1 x3y2
x1y1| aj ak bj bk cj ck
x1y2| al am bl bm cl cm
x2y1| dj dk ej ek fj fk

.
.

以下是我为此任务编写的非矢量化函数:

def transition_multiply(X,Y):
num_rows_X=len(X)
num_rows_Y=len(Y)
out=[]
count=0
for i in range(num_rows_X):
for j in range(num_rows_Y):
out.append([])
for x in X[i]:
for y in Y[j]:
out[count].append(x*y)
count+=1
return out

X=[[1,2,3],[2,3,4],[3,4,5]]
Y=[[2,4],[1,2]]
import numpy
print transition_multiply(numpy.array(X),numpy.array(Y))

我确实得到了所需的输出,但意识到非矢量化版本会非常慢。使用 Numpy 对此计算进行矢量化的最佳方法是什么。

对于那些对为什么需要这种计算感兴趣的人。从成分转移矩阵生成阶乘隐马尔可夫模型的转移矩阵需要它。

最佳答案

这是 Kronecker product , 请参阅 here在 numpy 文档中。

关于python - 有效地计算转换矩阵 (m*m) * (n*n) 的逐元素乘积以给出 (mn*mn) 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16330971/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com