Repeating each element of a numpy array 5 times Repeating each element of a numpy array 5 times arrays arrays

Repeating each element of a numpy array 5 times


In [1]: data = np.arange(-50,50,10)

To repeat each element 5 times use np.repeat:

In [3]: np.repeat(data, 5)Out[3]: array([-50, -50, -50, -50, -50, -40, -40, -40, -40, -40, -30, -30, -30,       -30, -30, -20, -20, -20, -20, -20, -10, -10, -10, -10, -10,   0,         0,   0,   0,   0,  10,  10,  10,  10,  10,  20,  20,  20,  20,        20,  30,  30,  30,  30,  30,  40,  40,  40,  40,  40])

To repeat the array 5 times use np.tile:

In [2]: np.tile(data, 5)Out[2]: array([-50, -40, -30, -20, -10,   0,  10,  20,  30,  40, -50, -40, -30,       -20, -10,   0,  10,  20,  30,  40, -50, -40, -30, -20, -10,   0,        10,  20,  30,  40, -50, -40, -30, -20, -10,   0,  10,  20,  30,        40, -50, -40, -30, -20, -10,   0,  10,  20,  30,  40])

Note, however, that sometimes you can take advantage of NumPy broadcasting instead of creating a larger array with repeated elements.

For example, if

z = np.array([1, 2])v = np.array([[3], [4], [5]])

then to add these arrays to produce

 [[4 5]  [5 6]  [6 7]]

you do not need to use tile:

In [12]: np.tile(z, (3,1))Out[12]: array([[1, 2],       [1, 2],       [1, 2]])In [13]: np.tile(v, (1,2))Out[13]: array([[3, 3],       [4, 4],       [5, 5]])In [14]: np.tile(z, (3,1)) + np.tile(v, (1,2))Out[14]: array([[4, 5],       [5, 6],       [6, 7]])

Instead, NumPy will broadcast the arrays for you:

In [15]: z + vOut[15]: array([[4, 5],       [5, 6],       [6, 7]])


Simply use np.repeat:

In [5]: data.repeat(5)Out[5]: array([-50, -50, -50, -50, -50, -40, -40, -40, -40, -40, -30, -30, -30,       -30, -30, -20, -20, -20, -20, -20, -10, -10, -10, -10, -10,   0,         0,   0,   0,   0,  10,  10,  10,  10,  10,  20,  20,  20,  20,        20,  30,  30,  30,  30,  30,  40,  40,  40,  40,  40])