как перебрать трехмерный массив и вычислить среднее значение каждой ячейки - PullRequest
0 голосов
/ 04 мая 2018

Я хочу создать цикл для следующих строк в Python (я использую Pycharm):

mean_diff = np.mean(np.array([diff_list[0].values, diff_list[1].values, diff_list[2].values, diff_list[3].values,...,diff_list[100], axis=0)

с этим я получаю среднее значение для каждой отдельной ячейки из разных массивов (изменение растра с течением времени)

я попробовал следующее:

for x in range(100):
    mean_diff = np.mean(np.array([diff_list[x].values]), axis=0)

но здесь происходит то, что он начнет вычислять среднее между средним значением последней итерации и новым массивом и т. Д. Вместо того, чтобы сначала все сложить, а затем вычислить среднее от общего значения. Одна идея состояла в том, чтобы сначала создать «sumarray» со всеми значениями diff_list, но я тоже не смог этого сделать. исходный тип моего diff_list - это список, в котором содержатся фреймы данных (для каждой строки у него есть массив, так что это 3-й массив / фрейм данных (??) ... -> см. рисунок: изображение показывает структура списка ).

1 Ответ

0 голосов
/ 04 мая 2018

Вам необходимо заполнить массив, а не выполнять вычисления в цикле. Понимание списка Python идеально подходит для этого:

Ваша первая программа эквивалентна:

mean_diff = np.mean(np.array([a.values for a in diff_list[:101]], axis=0))

Или, если вы предпочитаете:

x = []
for a in diff_list[:101]:
    x.append(a.values)
mean_diff = np.mean(np.array(x, axis=0))

Если вы используете весь список вместо его первых 101 элемента, вы можете опустить "[: 101]".

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