2012-02-12 3 views
1

У меня много сеток 100x100, есть ли эффективный способ использования numpy для вычисления медианы для каждой точки сетки и возврата только одной сетки 100x100 с медианными значениями? В настоящее время я использую цикл for для выполнения каждой точки сетки, вычисляя медиану, а затем комбинируя ее в одну сетку в конце. Я уверен, что есть лучший способ сделать это с помощью numpy. Любая помощь будет оценена! Благодаря!Эффективная двумерная статистика массива numpy

ответ

6

Создать как 100x100xN массив (или стек вместе, если это не представляется возможным) и использовать np.median с правильной оси, чтобы сделать это на одном дыхании:

import numpy as np 
a = np.random.rand(100,100) 
b = np.random.rand(100,100) 
c = np.random.rand(100,100) 
d = np.dstack((a,b,c)) 
result = np.median(d,axis=2) 
+0

Спасибо Mr E! Это имеет смысл, я не знал о функции dstack, но мне это нравится! Вы знаете, поддерживает ли numpy аналогичную функцию для получения 75-го процентиля? Если нет, все в порядке, вы уже много помогли! – Jonathan

+0

Просто сделайте 'np.sort (d, axis = 2)' и возьмите желаемый фрагмент. – YXD

0

Сколько сетки есть?

Одним из вариантов было бы создать 3D-массив размером 100x100xnumGrids и вычислить медиану по 3-му измерению.

0

использование параметра оси медианный:

import numpy as np 

data = np.random.rand(100, 5, 5) 

print np.median(data, axis=0) 

print np.median(data[:, 0, 0]) 
print np.median(data[:, 1, 0]) 
Смежные вопросы