English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Статистические функции в NumPy

numpy.amin() и numpy.amax()

numpy.amin() используется для вычисления минимального значения элементов массива по заданному направлению оси.
numpy.amax() используется для вычисления максимального значения элементов массива по заданному направлению оси.

 import numpy as np 
 a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) 
 print('Наш массив:', a)
 print('Вызов функции amin():', np.amin(a, 1))
 print('Вновь вызов функции amin():', np.amin(a, 0))
 print('Вызов функции amax():', np.amax(a))
 print('Вновь вызов функции amax():', np.amax(a, axis=0))

Результат вывода:

 Наш массив: [[3 7 5]
  [8 4 3]
  [2 4 9]
 Вызов функции amin(): [3 3 2]
 Вновь вызов функции amin(): [2 4 3]
 Вызов функции amax(): 9
 Вновь вызов функции amax(): [8 7 9]

numpy.ptp()

Функция numpy.ptp() вычисляет разницу между максимальным и минимальным значениями элементов массива (максимальное значение - минимальное значение).

 import numpy as np 
 a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]]) 
 print('Вызов функции ptp():', np.ptp(a))
 print('Вызов функции ptp() по оси 1:', np.ptp(a, axis=1))
 print('Вызов функции ptp() по оси 0:', np.ptp(a, axis=0))

Результат вывода:

 Вызов функции ptp(): 7
 Вызов функции ptp() по оси 1: [4 5 7]
 Вызов функции ptp() по оси 0: [6 3 6]

numpy.percentile()

Процентиль - это измерение, используемое в статистике, которое представляет собой процент значений наблюдений, которые меньше этого значения. Функция numpy.percentile() принимает следующие параметры.

numpy.percentile(a, q, axis)

Описание параметров:

a: входной массив q: вычисляемый процентиль, в диапазоне от 0 до 100 axis: ось, по которой вычисляются процентили

Сначала определим процентили:

Второй p-й процентиль - это такое значение, которое делает так, чтобы не менее p% значений данных было меньше или равно этому значению, и не менее (100-p)% значений данных было больше или равно этому значению.
Пример: Результаты入学考试 в высших учебных заведениях часто сообщаются в виде百分илей. Например, предположим, что原始ный балл студента по китайскому языку на вступительном экзамене составляет 54 балла. Как его результат сравнивается с другими студентами, участвующими в том же экзамене, трудно понять. Но если原始ный балл 54恰好 соответствует 70-й百分иле, мы можем знать, что около 70% студентов имеют более низкие баллы, а около 30% студентов имеют более высокие баллы.

Здесь p = 70.

 import numpy as np 
 a = np.array([[10, 7, 4], [3, 2, 1]])
 # 50% - это процентиль, который является медианой после排序 в массиве a
 print('Вызов функции percentile():', np.percentile(a, 50)) 
 # axis = 0, расчет по вертикали
 print(np.percentile(a, 50, axis=0)) 
 # axis = 1, расчет по горизонтали
 print(np.percentile(a, 50, axis=1)) 
 # Сохранение размеров
 print(np.percentile(a, 50, axis=1, keepdims=True))

Результат вывода:

 Вызов функции percentile(): 3.5
 [6.5 4.5 2.5]
 [7. 2.]
 [[7.]]
 [2.]

numpy.median()

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

 import numpy as np 
 a = np.array([[30,65,70],[80,95,10],[50,90,60]]) 
 print('Вызов функции median():', np.median(a))
 print('Вызов функции median() по оси 0:', np.median(a, axis=0))
 print('Вызов функции median() по оси 1:', np.median(a, axis=1))

Результат вывода:

 Вызов функции median(): 65.0
 Вызов функции median() по оси 0: [50. 90. 60.]
 Вызов функции median() по оси 1: [65. 80. 60.]

numpy.mean()

Функция numpy.mean() возвращает арифметическое среднее элементов массива. Если указана ось, то вычисление ведется по ней.
Среднее арифметическое является суммой элементов по оси, деленной на количество элементов.

 import numpy as np 
 a = np.array([[1,2,3],[3,4,5],[4,5,6]]) 
 print('Вызов функции mean():', (np.mean(a)))
 print('Вызов функции mean() по оси 0:', np.mean(a, axis=0))
 print('Вызов функции mean() по оси 1:', np.mean(a, axis=1))

Результат вывода:

 Вызов функции mean(): 3.6666666666666665
 Вызов функции mean() по оси 0: [2.66666667, 3.66666667, 4.66666667]
 Вызов функции mean() по оси 1: [2.0, 4.0, 5.0]

numpy.average()

Функция numpy.average() вычисляет среднее арифметическое значений массива с учетом весов, указанных в другом массиве.
Функция принимает параметр оси. Если ось не указана, массив разворачивается.<
Среднее арифметическое с весами рассчитывается, умножая каждый элемент на соответствующий вес, затем суммируя результаты и деля на общее количество единиц.
Для вычисления среднеарифметического с весами массива [1, 2, 3, 4] и соответствующих весов [4, 3, 2, 1] необходимо сложить произведение соответствующих элементов и разделить на сумму весов.

Среднее арифметическое с весами = (1*4+2*3+3*2+4*1)/(4+3+2+1)
 import numpy as np 
 a = np.array([1, 2, 3, 4]) 
 print('Вызов функции average():', np.average(a))
 # При отсутствии указания весов эквивалентно функции mean
 wts = np.array([4, 3, 2, 1]) 
 print('Повторный вызов функции average():', np.average(a, weights=wts))
 # Если параметр returned установлен в True, то возвращается сумма весов 
 print('Сумма весов:', np.average([1, 2, 3, 4], weights=[4, 3, 2, 1], returned=True))

Результат вывода:

 Вызов функции average(): 2.5
 Повторный вызов функции average(): 2.0
 Сумма весов: (2.0, 10.0)

В многоомерном массиве можно указать ось для вычислений.

 import numpy as np 
 a = np.arange(6).reshape(3, 2) 
 wt = np.array([3, 5]) 
 print('Измененный массив:', np.average(a, axis=1, weights=wt))
 print('Измененный массив:', np.average(a, axis=1, weights=wt, returned=True))

Результат вывода:

 Измененный массив: [0.625 2.625 4.625]
 Измененный массив: (array([0.625, 2.625, 4.625]), array([8., 8., 8.]))

Стандартное отклонение

Стандартное отклонение является мерой степениdispersion значений среднего значения набора данных.
Стандартное отклонение является арифметической квадратной корнем дисперсии.
Формула стандартного отклонения такая:

 std = sqrt(mean((x - x.mean())**2))

Если массив равен [1,2,3,4], то его среднее значение равно 2.5. Таким образом, квадраты разностей равны [2.25,0.25,0.25,2.25], и среднее значение квадратов делится на 4, то есть sqrt(5/4), результат равен 1.1180339887498949.

import numpy as np 
print(np.std([1,2,3,4]))

Результат вывода:

1.1180339887498949

Дисперсия

В статистике дисперсия (дисперсия выборки) является средним значением квадратов разностей каждого значения выборки от среднего значения всех значений, то есть mean((x - x.mean())** 2).
Иначе говоря, стандартное отклонение является квадратным корнем дисперсии.

import numpy as np 
print(np.var([1,2,3,4]))
1.25