Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高效地计算转移矩阵(m*m)*(n*n)的元素乘积,得到(mn*mn)矩阵_Python_Matrix_Numpy_Hidden Markov Models - Fatal编程技术网

Python 高效地计算转移矩阵(m*m)*(n*n)的元素乘积,得到(mn*mn)矩阵

Python 高效地计算转移矩阵(m*m)*(n*n)的元素乘积,得到(mn*mn)矩阵,python,matrix,numpy,hidden-markov-models,Python,Matrix,Numpy,Hidden Markov Models,分别考虑形状(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

分别考虑形状(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将此计算矢量化的最佳方法是什么

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

这是,请参见numpy文档