Есть ли в numpy метод, который вычисляет среднее значение для каждого двумерного массива из трехмерного массива? - PullRequest
0 голосов
/ 12 января 2020

Например:

import numpy as np

a = np.array([[[1,2,3],[1,2,3]],[[4,5,6],[7,8,7]]])

print(a.shape)
# (2, 2, 3)

Итак, на каждой двумерной сетке (3 сетки в примере выше) я хочу вычислить среднее значение:

mean = [np.mean(a[:, :, i]) for i in range(3)]
print(mean)
# [3.25, 4.25, 4.75]

Есть ли метод в numpy что достигает этого?

Я попытался использовать среднее значение по оси, но результат не такой, как ожидалось.

1 Ответ

1 голос
/ 12 января 2020

Вы можете выполнить sh, используя np.mean(axis = ...) и указав кортеж для усреднения значений по

a.mean(axis=tuple(range(len(a.shape) - 1)))

. Это вычислит среднее значение для каждого измерения / оси, кроме последней (обратите внимание, как диапазон индексов осей варьируется от 0 до len - 1 (исключая), таким образом игнорируя последнюю ось.


Этот метод расширяем для более глубоких массивов. Например, если у вас есть массив формы (2, 6, 5, 4, 3), он будет вычислять среднее значение как a.mean(axis=(0, 1, 2, 3)), что даст вам массив из 3 средних (соответствующих 3 элементам в последнем измерении)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...