Function | _as_pairs |
Broadcast x to an array with the shape (ndim , 2). |
Function | _get_edges |
Retrieve edge values from empty-padded array in given dimension. |
Function | _get_linear_ramps |
Construct linear ramps for empty-padded array in given dimension. |
Function | _get_stats |
Calculate statistic for the empty-padded array in given dimension. |
Function | _pad_dispatcher |
Undocumented |
Function | _pad_simple |
Pad array on all sides with either a single value or undefined values. |
Function | _round_if_needed |
Rounds arr inplace if destination dtype is integer. |
Function | _set_pad_area |
Set empty-padded area in given dimension. |
Function | _set_reflect_both |
Pad axis of arr with reflection. |
Function | _set_wrap_both |
Pad axis of arr with wrapped values. |
Function | _slice_at_axis |
Construct tuple of slices to slice an array in the given dimension. |
Function | _view_roi |
Get a view of the current region of interest during iterative padding. |
Function | pad |
Pad an array. |
Broadcast x
to an array with the shape (ndim
, 2).
A helper function for pad
that prepares and validates arguments like
pad_width
for iteration in pairs.
ndim
, 2).x
will have.x
is not None, try to round each element of x
to an integer
(dtype np.intp
) and ensure every element is positive.ndim
, 2)x
.as_index
is True and x
contains negative elements.
Or if x
is not broadcastable to the shape (ndim
, 2).Retrieve edge values from empty-padded array in given dimension.
padded
in the given dimension. Its
shape will always match padded
except for the dimension given by
axis
which will have a length of 1.Construct linear ramps for empty-padded array in given dimension.
padded
.Calculate statistic for the empty-padded array in given dimension.
padded
is considered.padded
.Pad array on all sides with either a single value or undefined values.
arr
.array
is not F-contiguous.Rounds arr inplace if destination dtype is integer.
Set empty-padded area in given dimension.
arr
.Pad axis
of arr
with reflection.
arr
.axis
. If these are
both 0, padding is done in this dimension.Pad axis
of arr
with wrapped values.
arr
.axis
. If these are
both 0, padding is done in this dimension.Construct tuple of slices to slice an array in the given dimension.
sl
is applied. All other dimensions are left
"unsliced".shape
in length.>>> _slice_at_axis(slice(None, 3, -1), 1) (slice(None, None, None), slice(None, 3, -1), (...,))
Get a view of the current region of interest during iterative padding.
When padding multiple dimensions iteratively corner values are unnecessarily overwritten multiple times. This function reduces the working area for the first dimensions so that corners are excluded.
axis
is padded before
axis
+ 1.array
.Pad an array.
One of the following string values or a user supplied function.
Pads with undefined values.
Used in 'maximum', 'mean', 'median', and 'minimum'. Number of values at edge of each axis used to calculate the statistic value.
((before_1, after_1), ... (before_N, after_N)) unique statistic lengths for each axis.
((before, after),) yields same before and after statistic lengths for each axis.
(stat_length,) or int is a shortcut for before = after = statistic length for all axes.
Default is None, to use the entire axis.
Used in 'constant'. The values to set the padded values for each axis.
((before_1, after_1), ... (before_N, after_N)) unique pad constants for each axis.
((before, after),) yields same before and after constants for each axis.
(constant,) or constant is a shortcut for before = after = constant for all axes.
Default is 0.
Used in 'linear_ramp'. The values used for the ending value of the linear_ramp and that will form the edge of the padded array.
((before_1, after_1), ... (before_N, after_N)) unique end values for each axis.
((before, after),) yields same before and after end values for each axis.
(constant,) or constant is a shortcut for before = after = constant for all axes.
Default is 0.
array
with shape increased
according to pad_width
.For an array with rank greater than 1, some of the padding of later axes is calculated from padding of previous axes. This is easiest to think about with a rank 2 array where the corners of the padded array are calculated by using padded values from the first axis.
The padding function, if used, should modify a rank 1 array in-place. It has the following signature:
padding_func(vector, iaxis_pad_width, iaxis, kwargs)
where
- vector : ndarray
- A rank 1 array already padded with zeros. Padded values are vector[:iaxis_pad_width[0]] and vector[-iaxis_pad_width[1]:].
- iaxis_pad_width : tuple
- A 2-tuple of ints, iaxis_pad_width[0] represents the number of values padded at the beginning of vector where iaxis_pad_width[1] represents the number of values padded at the end of vector.
- iaxis : int
- The axis currently being calculated.
- kwargs : dict
- Any keyword arguments the function requires.
>>> a = [1, 2, 3, 4, 5] >>> np.pad(a, (2, 3), 'constant', constant_values=(4, 6)) array([4, 4, 1, ..., 6, 6, 6])
>>> np.pad(a, (2, 3), 'edge') array([1, 1, 1, ..., 5, 5, 5])
>>> np.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4)) array([ 5, 3, 1, 2, 3, 4, 5, 2, -1, -4])
>>> np.pad(a, (2,), 'maximum') array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> np.pad(a, (2,), 'mean') array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> np.pad(a, (2,), 'median') array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]] >>> np.pad(a, ((3, 2), (2, 3)), 'minimum') array([[1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1], [3, 3, 3, 4, 3, 3, 3], [1, 1, 1, 2, 1, 1, 1], [1, 1, 1, 2, 1, 1, 1]])
>>> a = [1, 2, 3, 4, 5] >>> np.pad(a, (2, 3), 'reflect') array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> np.pad(a, (2, 3), 'reflect', reflect_type='odd') array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> np.pad(a, (2, 3), 'symmetric') array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> np.pad(a, (2, 3), 'symmetric', reflect_type='odd') array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> np.pad(a, (2, 3), 'wrap') array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> def pad_with(vector, pad_width, iaxis, kwargs): ... pad_value = kwargs.get('padder', 10) ... vector[:pad_width[0]] = pad_value ... vector[-pad_width[1]:] = pad_value >>> a = np.arange(6) >>> a = a.reshape((2, 3)) >>> np.pad(a, 2, pad_with) array([[10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10], [10, 10, 0, 1, 2, 10, 10], [10, 10, 3, 4, 5, 10, 10], [10, 10, 10, 10, 10, 10, 10], [10, 10, 10, 10, 10, 10, 10]]) >>> np.pad(a, 2, pad_with, padder=100) array([[100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100], [100, 100, 0, 1, 2, 100, 100], [100, 100, 3, 4, 5, 100, 100], [100, 100, 100, 100, 100, 100, 100], [100, 100, 100, 100, 100, 100, 100]])