On 03.12.2011, at 6:22PM, Robin Kraft wrote: > That does repeat the elements, but doesn't get them into the desired order. > > In [4]: print a > [[1 2] > [3 4]] > > In [7]: np.tile(a, 4) > Out[7]: > array([[1, 2, 1, 2, 1, 2, 1, 2], > [3, 4, 3, 4, 3, 4, 3, 4]]) > > In [8]: np.tile(a, 4).reshape(4,4) > Out[8]: > array([[1, 2, 1, 2], > [1, 2, 1, 2], > [3, 4, 3, 4], > [3, 4, 3, 4]]) > > It's close, but I want to repeat the elements along the two axes, effectively > stretching it by the lower right corner: > > array([[1, 1, 2, 2], > [1, 1, 2, 2], > [3, 3, 4, 4], > [3, 3, 4, 4]]) > > It would take some more reshaping/axis rolling to get there, but it seems > doable. > > Anyone know what combination of manipulations would work with the result of > np.tile? > Rolling was the keyword:
np.rollaxis(np.tile(a, 4).reshape(2,2,-1), 2, 1).reshape(4,4)) [[1 1 2 2] [1 1 2 2] [3 3 4 4] [3 3 4 4]] I leave the generalisation and timing up to you, but it seems for a = np.arange(M**2).reshape(M,-1) np.rollaxis(np.tile(a, N**2).reshape(M,N,-1), 2, 1).reshape(M*N,-1) should do the trick. Cheers, Derek _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion