方法1
经典案例
numpy.kron-
np.kron(np.eye(r,dtype=int),a) # r is number of repeats
样品运行-
In [184]: aOut[184]: array([[1, 2, 3], [3, 4, 5]])In [185]: r = 3 # number of repeatsIn [186]: np.kron(np.eye(r,dtype=int),a)Out[186]: array([[1, 2, 3, 0, 0, 0, 0, 0, 0], [3, 4, 5, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 2, 3, 0, 0, 0], [0, 0, 0, 3, 4, 5, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 2, 3], [0, 0, 0, 0, 0, 0, 3, 4, 5]])
方法#2
另一个高效的
diagonal-viewed-array-assignment-
def repeat_along_diag(a, r): m,n = a.shape out = np.zeros((r,m,r,n), dtype=a.dtype) diag = np.einsum('ijik->ijk',out) diag[:] = a return out.reshape(-1,n*r)样品运行-
In [188]: repeat_along_diag(a,3)Out[188]: array([[1, 2, 3, 0, 0, 0, 0, 0, 0], [3, 4, 5, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 2, 3, 0, 0, 0], [0, 0, 0, 3, 4, 5, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 2, 3], [0, 0, 0, 0, 0, 0, 3, 4, 5]])



