Is there a function doing the opposite of what numpy.pad()
does?
What I am looking for is a function to (uniformly) reduce the dimensions of a numpy array (matrix) in each direction. I tried like to call the numpy.pad()
with negative values, but it gave an error:
import numpy as np
A_flat = np.array([0,1,2,3,4,5,6,7,8,9,10,11])
A = np.reshape(A_flat, (3,2,-1))
#this WORKS:
B = np.pad(A, ((1,1),(1,1),(1,1)), mode='constant')
# this DOES NOT WORK:
C = np.pad(B, ((-1,1),(1,1),(1,1)), mode='constant')
Error: ValueError: ((-1, 1), (1, 1), (1, 1)) cannot contain negative values.
I understand this function numpy.pad()
does not take negative values, but is there a numpy.unpad()
or something similar?
negative() in Python. numpy. negative() function is used when we want to compute the negative of array elements. It returns element-wise negative value of an array or negative value of a scalar.
pad() function is used to pad the Numpy arrays. Sometimes there is a need to perform padding in Numpy arrays, then numPy. pad() function is used. The function returns the padded array of rank equal to the given array and the shape will increase according to pad_width.
NumPy: flip() function The flip() function is used to reverse the order of elements in an array along the given axis. The shape of the array is preserved, but the elements are reordered.
You can flip the image vertically and horizontally by using numpy. flip() , numpy. flipud() , numpy. fliplr() .
As mdurant suggests, simply use slice indexing:
In [59]: B[1:-1, 1:-1, 1:-1]
Out[59]:
array([[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]]])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With