#python #numpy-ndarray
#python #numpy-ndarray
Вопрос:
У меня есть массив формы (3,5,96,96), где каналы = 3, количество кадров = 5, а высота и ширина = 96. Я хочу выполнить итерацию по размеру 5, чтобы получить изображения с размером (3,96,96). Код, который я пробовал, приведен ниже.
b = frame.shape[1]
for i in range(b):
fr = frame[:,i,:,:]
Но это не работает.
Ответ №1:
Вы можете поменять ось (используя numpy.swapaxes(a, axis1, axis2)
для получения второго (кадра) в первой позиции
import numpy as np
m = np.zeros((3, 5, 96, 96))
n = np.swapaxes(m, 0, 1)
print(n.shape)
(5, 3, 96, 96)
Ответ №2:
Вам нужно выполнить итерацию по первой оси, чтобы достичь желаемого результата, это означает, что вам нужно переместить ось, которую вы хотите выполнить итерацию, в первую позицию. Вы можете достичь этого с помощью np.moveaxis
m = np.zeros((3, 5, 96, 96))
np.moveaxis(m, 1, 0).shape
(5, 3, 96, 96)