2014-10-14 2 views
0

У меня есть 140 массивов, размер которых равен 734 x 1468. Мне нужно среднее значение по 140 массивам в записях 734 x 1468, я начал с итерирования данных с помощью вложенных циклов но это слишком медленно. Я попытался с помощью функции np.meanNump: использование np.mean в 3-х измерениях

res = np.mean([megadatalist[i].variables['analysed_sst'][0] for i in range(0,140)], axis=2) 

res.shape дает (140, 734)

Мне нужен результат измерений 734, 1468

megadatalist состоит из 140 NetCDF файлов.

+0

Попробуйте 'ось = 0 'вместо' оси = 2'. –

+0

О, мой, кажется, работает, теперь я чувствую себя немым: D – NicolaiF

+0

Не чувствуйте себя глупым. Смешение над осями - обычная часть жизни с NumPy. –

ответ

4

Вы передаете список массивов, на которые делается ссылка (140,734,1468). Поэтому либо вы используете np.dstack, как показано ниже, либо можете изменить axis=0.

С np.dstack:

X = np.dstack([megadatalist[i].variables['analysed_sst'][0] 
     for i in range(0,140)]) 

res = np.mean(X, axis=2) 
+0

Это имеет смысл. Оно работает! Не знал о Dstack до сих пор, это невероятно умный, большое вам спасибо! – NicolaiF

+0

«Вы передаете список массивов вместо трехмерного массива» <- Не должно иметь значения: NumPy должен обрабатывать список, как если бы он был массивом формы '(140, 734, 1468)'. Здесь необходимо изменить 'axis = 2' на' axis = 0'. –

+0

Это, кажется, работает просто отлично, спасибо! – NicolaiF

Смежные вопросы