I have a 3D numpy array (1L, 420L, 580L) the 2nd and 3rd dimension is a gray scale image that I want to display using openCV. How do I pull the 2D array from the 3D array?
I created a short routine to do this, but I bet there is a better way.
# helper function to remove 1st dimension
rows = in_array.shape # vertical
cols = in_array.shape # horizontal
out_array = np.zeros((rows, cols), np.uint8) # create new array to hold image data
for r in xrange(rows):
for c in xrange(cols):
out_array[r, c] = in_array[:, r, c]
If you always only have the first dimension == 1, then you could simply reshape the array...
if in_array.shape == 1: return in_array.reshape(in_array.shape[1:])
otherwise, you can use numpy's advanced list slicing...
else: return in_array[0,:,:]