[Numpy-discussion] Padding An Array Along A Single Axis

Joe Kington joferkington at gmail.com
Fri Jan 3 09:02:03 EST 2014


You can use np.pad for this:

In [1]: import numpy as np

In [2]: x = np.ones((3, 3))

In [3]: np.pad(x, [(0, 0), (0, 1)], mode='constant')
Out[3]:
array([[ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  0.]])

Each item of the pad_width (second) argument is a tuple of before, after
for each axis.  I've only padded the end of the last axis, but if you
wanted to pad both "sides" of it:

In [4]: np.pad(x, [(0, 0), (1, 1)], mode='constant')
Out[4]:
array([[ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  1.,  1.,  1.,  0.]])

Hope that helps,
-Joe





On Fri, Jan 3, 2014 at 6:58 AM, Freddie Witherden <freddie at witherden.org>wrote:

> Hi all,
>
> This should be an easy one but I can not come up with a good solution.
> Given an ndarray with a shape of (..., X) I wish to zero-pad it to have
> a shape of (..., X + K), presumably obtaining a new array in the process.
>
> My best solution this far is to use
>
>    np.zeros(curr.shape[:-1] + (curr.shape[-1] + K,))
>
> followed by an assignment.  However, this seems needlessly cumbersome.
> I looked at np.pad but it does not seem to provide a means of just
> padding a single axis easily.
>
> Regards, Freddie.
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140103/47859702/attachment.html>


More information about the NumPy-Discussion mailing list