Search code examples
numpypad

Is there a simple pad in numpy?


Is there a numpy function that pads an array this way?

import numpy as np

def pad(x, length):
    tmp = np.zeros((length,))
    tmp[:x.shape[0]] = x
    return tmp

x = np.array([1,2,3])
print pad(x, 5)

Output:

[ 1.  2.  3.  0.  0.]

I couldn't find a way to do it with numpy.pad()


Solution

  • You can use ndarray.resize():

    >>> x = np.array([1,2,3])
    >>> x.resize(5)
    >>> x
    array([1, 2, 3, 0, 0])
    

    Note that this functions behaves differently from numpy.resize(), which pads with repeated copies of the array itself. (Consistency is for people who can't remember everything.)