numpy.
kron
两个阵列的克罗内克积。
计算克罗内克积,一个由第二个数组块组成的复合数组,由第一个数组缩放。
参见
outer
外部产品
笔记
该函数假定 a 和 b 如果必要的话,是相同的,在最小的前面加上一个。如果 a.shape = (r0,r1,..,rN) 和 b.shape = (s0,s1,...,sN) ,克罗内克产品有形状 (r0*s0, r1*s1, ..., rN*SN) . 元素是元素的产物 a 和 b ,明确组织:
a.shape = (r0,r1,..,rN)
b.shape = (s0,s1,...,sN)
(r0*s0, r1*s1, ..., rN*SN)
kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN]
哪里::
kt = it * st + jt, t = 0,...,N
在常见的二维情况下(n=1),可以可视化块结构:
[[ a[0,0]*b, a[0,1]*b, ... , a[0,-1]*b ], [ ... ... ], [ a[-1,0]*b, a[-1,1]*b, ... , a[-1,-1]*b ]]
实例
>>> np.kron([1,10,100], [5,6,7]) array([ 5, 6, 7, ..., 500, 600, 700]) >>> np.kron([5,6,7], [1,10,100]) array([ 5, 50, 500, ..., 7, 70, 700])
>>> np.kron(np.eye(2), np.ones((2,2))) array([[1., 1., 0., 0.], [1., 1., 0., 0.], [0., 0., 1., 1.], [0., 0., 1., 1.]])
>>> a = np.arange(100).reshape((2,5,2,5)) >>> b = np.arange(24).reshape((2,3,4)) >>> c = np.kron(a,b) >>> c.shape (2, 10, 6, 20) >>> I = (1,3,0,2) >>> J = (0,2,1) >>> J1 = (0,) + J # extend to ndim=4 >>> S1 = (1,) + b.shape >>> K = tuple(np.array(I) * np.array(S1) + np.array(J1)) >>> c[K] == a[I]*b[J] True