Допустим, ваш 4D массив изображений называется img_stack
с формой (60000,32,32,3).
Вы можете сделать:
gray_stack = np.empty_like(img_stack[...,0])
for i in range(img_stack.shape[0]):
gray_stack[i] = cv2.cvtColor(img_stack[i], cv2.COLOR_RGB2GRAY)
Результирующая форма (60000,32,32).
Или вы можете сделать:
gray_stack = np.empty_like(img_stack[...,:1])
for i in range(img_stack.shape[0]):
gray_stack[i,:,:,0] = cv2.cvtColor(img_stack[i], cv2.COLOR_RGB2GRAY)
Результирующая форма (60000,32,32,1).
Бонусное решение Tensorflow:
gray_stack = tf.image.rgb_to_grayscale(img_stack, name=None)
Результирующая форма будет (60000,32,32,1).
Указанные выше решения OpenCV могут работать быстрее.