Обработка 4-х мерного массива Python

Я хочу создать список из 10 матриц (32,32,3), который будет содержать сумму значений из моих изображений RGB.

Так что я использовал matrixSum = np.zeros((10,32,32,3),np.uint64)
И я думал, чтобы получить доступ к нему с помощью matrixSum[indiceClass][ligne][col][rgb]
Но я продолжаю иметь ошибку, сообщающую мне, что matrixSum[indiceClass] только размер 1
Поэтому я изменил свой код на matrixSum[indiceClass][0][ligne][col][rgb] и у меня больше нет этой ошибки, но она доставляет мне неприятности позже.

Я делаю что-то неправильно? Я не понимаю, почему у меня будет массив размером 1 вместо 32. Или это логично?
Вот полный код функции: (indiceclasse будет только между 0 и 9)

def createMatrixSum(data, nbImagesParClasse):
    matricesSum = np.zeros((10,32,32,3),np.uint64)
    indiceClasse = 0
    for i in range(0,80):
        indiceClasse = data["y"][i]
        indiceClasse -= 1;
        nbImagesParClasse[indiceClasse] += 1
        for ligne in range(32):
            for col in range(32):
                for rgb in range(3):
                    matricesSum[indiceClasse][ligne][col][rgb] += data["X"][ligne,col,rgb,i]
    return matricesSum, nbImagesParClasse

Изменить: вот длина и форма моих данных / матрицы до ошибки.
Я не вижу ничего плохого.

1 ответ

Решение

Что ж, получается, что "indiceClass", который я пытался получить, был не целым числом, как я думал, а списком размера 1. Поэтому использование его в качестве индекса добавило еще один список в мою матрицу, который объясняет, почему я получил этот список в середине. Должен был проверить это заранее.

Другие вопросы по тегам