我正在尝试为2个稀疏矩阵找到Kronecker产品。我的代码如下。
import numpy as np
import scipy as sp
from scipy.sparse import dia_matrix, kron
dx = np.linspace(0,1,5)
x = populatematrix1(len(dx))
print x.shape, type(x)
y = populatematrix2(len(dx))
print y.shape, type(y)
z = kron(x,y)
print z.shape
我检查了用于填充稀疏矩阵的两个函数。他们工作得很好。当我在2个稀疏矩阵之间进行Kronecker生成时,问题出现了。 我得到的结果如下:
(3,3) <class 'scipy.sparse.dia.dia_matrix'>
(3,3) <class 'scipy.sparse.dia.dia_matrix'>
(3,3)
前两行是x和y的形状和类型。最后一行是z的形状。
如果z是Kronecker产品,则形状应为(9,9)。
为什么我得到(3,3)?非常感谢你。
以下是populatematrix1
和populatematrix2
的最简单定义,populatematrix2
与populatematrix1
def populatematrix1(dim):
return dia_matrix( (np.array( [np.array([2]*5),np.array([1]*5), np.array([1]*5)] ),np.array([0,1,-1]) ),shape=(5,5))