numpy.median

numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)

Функция median() вычисляет медиану элементов массива.

Медиана - это такое значение, что ровно половина элементов массива окажется меньше него, а друга больше.

Параметры:
a - массив NumPy или подобный массиву объект.
Входные данные.
axis - число, кортеж целых чисел или None (необязательный параметр).
Позволяет задать ось или несколько осей вдоль которых вычисляются медианы. По умолчанию установлено значение None, что соответствует вычислению медианы всех элементов массива, так словно он сжат до одной оси.
out - массив NumPy (необязательный параметр).
Массив в который можно поместить результат функции. Данный массив должен соответствовать форме и типу данных результирующего массива функции (зачастую, тип данных может быть преобразован автоматически). Указание данного параметра, позволяет избежать лишней операции присваивания тем самым немного ускоряя работу вашего кода. Полезный параметр если вы очень часто обращаетесь к функции в цикле.
overwrite_input - True или False (необязательный параметр).
Значение True позволяет использовать входной массив a для промежуточных вычислей, что позволяет сэкономит память но приводит к потере данных. Если установлен в True и a не является массивом NumPy, то возникнет ошибка.
keepdims - True или False (необязательный параметр).
Если данный параметр указан как True, то результат работы функции по указанным осям будет способен к транслированию по исходному массиву, т.е. результат функции оформляется в массив с количеством осей исходного массива. Если параметр установлен в значение False, то результатом работы функции будет либо число, либо одномерный массив чисел. Доступно в NumPy с версии 1.9.0.
Возвращает:
результат - массив NumPy или число
Медиану значений элементов массива в виде числа для одномерного массива, или многомерного если параметр axis = None. Для многомерного массива возвращает массив NumPy если в параметре axis оси указаны.
Смотрите так же:
var, average, mean, std, percentile

Примеры

>>> import numpy as np
>>> 
>>> a = [1, 2, 3, 5, 6, 7]
>>> 
>>> np.median(a)
4.0
>>> 
>>> b = np.arange(9)
>>> b
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> 
>>> np.median(b)
4.0

Если у массива больше одной оси (больше одного измерения), то мы можем найти медиану вдоль каждой из них:

>>> c = np.arange(25).reshape(5, 5)
>>> c
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> 
>>> np.median(c, axis = 0)
array([10., 11., 12., 13., 14.])
>>> 
>>> np.median(c, axis = 1)
array([ 2.,  7., 12., 17., 22.])
>>> 
>>> np.median(c, axis = (0, 1))
12.0
>>> 
>>> np.median(c)
12.0

Параметр keepdims позволяет сохранить форму исходного массива, что позволяет в дальнейшем использовать механизм транслирования:

>>> d = np.arange(10).reshape(2, 5)
>>> d
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> 
>>> np.median(d, axis = 0, keepdims = True)
array([[2.5, 3.5, 4.5, 5.5, 6.5]])
>>> 
>>> np.median(d, axis = 1, keepdims = True)
array([[2.],
       [7.]])

Параметр out позволяет указать массив в который необходимо поместить результат расчетов:

>>> d
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> 
>>> m0 = np.zeros(5,)
>>> m0
array([0., 0., 0., 0., 0.])
>>> 
>>> np.median(d, axis = 0, out = m0)
array([2.5, 3.5, 4.5, 5.5, 6.5])
>>> 
>>> m0
array([2.5, 3.5, 4.5, 5.5, 6.5])

Параметр overwrite_input позволяет сэкономить память, но это приведет к изменению данных входного массива:

>>> a = np.arange(36).reshape(6, 6)
>>> a
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])
>>> 
>>> np.median(a)
17.5
>>> 
>>> np.median(a, overwrite_input = True)
17.5
>>> 
>>> a
array([[ 1,  0,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35]])