I would recommend np.tile .
>>> a=np.arange(4) >>> a array([0, 1, 2, 3]) >>> np.tile(a,(6,1)) array([[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]) >>> b= np.eye(2) >>> b array([[ 1., 0.], [ 0., 1.]]) >>> np.tile(b,(3,1,1)) array([[[ 1., 0.], [ 0., 1.]], [[ 1., 0.], [ 0., 1.]], [[ 1., 0.], [ 0., 1.]]])
Extending in many dimensions is also quite simple:
>>> np.tile(b,(2,2,2)) array([[[ 1., 0., 1., 0.], [ 0., 1., 0., 1.], [ 1., 0., 1., 0.], [ 0., 1., 0., 1.]], [[ 1., 0., 1., 0.], [ 0., 1., 0., 1.], [ 1., 0., 1., 0.], [ 0., 1., 0., 1.]]])