binned_statistic_dd#
- scipy.stats.binned_statistic_dd(sample, values, статистика='mean', bins=10, range=None, expand_binnumbers=False, binned_statistic_result=None)[источник]#
Вычисление многомерной бинированной статистики для набора данных.
Это обобщение функции histogramdd. Гистограмма делит пространство на бины и возвращает количество точек в каждом бине. Эта функция позволяет вычислять сумму, среднее, медиану или другую статистику значений в каждом бине.
- Параметры:
- samplearray_like
Данные для гистограммы передаются как последовательность из N массивов длины D, или как массив (N,D).
- values(N,) array_like или список из (N,) array_like
Данные, по которым будет вычисляться статистика. Они должны иметь ту же форму, что и sample, или список последовательностей - каждая с той же формой, что и sample. Если values является таким списком, статистика будет вычислена для каждого независимо.
- статистикастрока или вызываемый объект, необязательный
Статистика для вычисления (по умолчанию 'mean'). Доступны следующие статистики:
‘mean’ : вычисляет среднее значений точек в каждом бине. Пустые бины будут представлены NaN.
‘median’ : вычисляет медиану значений для точек в каждом бине. Пустые бины будут представлены NaN.
'count' : вычисление количества точек в каждом бине. Это идентично невзвешенной гистограмме. values массив не используется.
‘sum’ : вычисляет сумму значений для точек в каждом бине. Это идентично взвешенной гистограмме.
‘std’ : вычисление стандартного отклонения в каждом бине. Это неявно вычисляется с ddof=0. Если количество значений в данном бине равно 0 или 1, вычисленное значение стандартного отклонения для бина будет 0.
'min' : вычисляет минимальное значение точек в каждом бине. Пустые бины будут представлены NaN.
‘max’ : вычисление максимального значения для точек в каждом бине. Пустые бины будут представлены NaN.
функция : пользовательская функция, которая принимает 1D массив значений и выводит одну числовую статистику. Эта функция будет вызываться для значений в каждом бине. Пустые бины будут представлены как function([]) или NaN, если это возвращает ошибку.
- binsпоследовательность или положительное целое, опционально
Спецификация бинов должна быть в одной из следующих форм:
Последовательность массивов, описывающих границы бинов по каждому измерению.
Количество бинов для каждого измерения (nx, ny, … = bins).
Количество бинов для всех измерений (nx = ny = … = bins).
- rangesequence, optional
Последовательность нижних и верхних границ бинов, используемая, если границы не заданы явно в bins. По умолчанию равны минимальному и максимальному значениям по каждому измерению.
- expand_binnumbersbool, необязательно
‘False’ (по умолчанию): возвращаемый binnumber является массивом формы (N,) линейных индексов бинов. ‘True’: возвращаемый binnumber 'разворачивается' в массив формы (D,N), где каждая строка дает номера бинов в соответствующем измерении. См. binnumber возвращаемое значение, и Примеры раздел
binned_statistic_2d.- binned_statistic_resultbinnedStatisticddResult
Результат предыдущего вызова функции для повторного использования границ бинов и номеров бинов с новыми значениями и/или другой статистикой. Чтобы повторно использовать номера бинов, expand_binnumbers должно быть установлено в False (по умолчанию)
Добавлено в версии 0.17.0.
- Возвращает:
- статистикаndarray, форма (nx1, nx2, nx3,…)
Значения выбранной статистики в каждом двумерном бине.
- bin_edgesсписок ndarrays
Список из D массивов, описывающих (nxi + 1) границ бинов для каждого измерения.
- binnumber(N,) массив целых чисел или (D,N) ndarray целых чисел
Это присваивает каждому элементу sample целое число, которое представляет бинарный контейнер, в который попадает это наблюдение. Представление зависит от expand_binnumbers аргумент. См. Примечания подробности.
Смотрите также
Примечания
Границы бинов: Все, кроме последнего (самого правого) бина, полуоткрыты в каждом измерении. Другими словами, если bins является
[1, 2, 3, 4], тогда первый бинарный интервал[1, 2)(включая 1, но исключая 2) и второй[2, 3). Однако последний бинарный интервал,[3, 4], который includes 4.binnumber: Этот возвращаемый аргумент присваивает каждому элементу sample целое число, которое представляет бинарный контейнер, к которому оно принадлежит. Представление зависит от expand_binnumbers аргумент. Если 'False' (по умолчанию): Возвращаемый binnumber является массивом формы (N,) линейных индексов, отображающих каждый элемент sample в соответствующий бинарный контейнер (используя порядок строк). Если 'True': Возвращённый binnumber является массивом формы (D,N), где каждая строка указывает размещение бинов для каждого измерения соответственно. В каждом измерении номер бина i означает, что соответствующее значение находится между (bin_edges[D][i-1], bin_edges[D][i]), для каждого измерения ‘D’.
Добавлено в версии 0.11.0.
Примеры
>>> import numpy as np >>> from scipy import stats >>> import matplotlib.pyplot as plt >>> from mpl_toolkits.mplot3d import Axes3D
Возьмем массив из 600 координат (x, y) в качестве примера.
binned_statistic_ddможет обрабатывать массивы более высокой размерности D. Но график размерности D+1 требуется.>>> mu = np.array([0., 1.]) >>> sigma = np.array([[1., -0.5],[-0.5, 1.5]]) >>> multinormal = stats.multivariate_normal(mu, sigma) >>> data = multinormal.rvs(size=600, random_state=235412) >>> data.shape (600, 2)
Создать бины и подсчитать, сколько массивов попадает в каждый бин:
>>> N = 60 >>> x = np.linspace(-3, 3, N) >>> y = np.linspace(-3, 4, N) >>> ret = stats.binned_statistic_dd(data, np.arange(600), bins=[x, y], ... statistic='count') >>> bincounts = ret.statistic
Установить объем и расположение столбцов:
>>> dx = x[1] - x[0] >>> dy = y[1] - y[0] >>> x, y = np.meshgrid(x[:-1]+dx/2, y[:-1]+dy/2) >>> z = 0
>>> bincounts = bincounts.ravel() >>> x = x.ravel() >>> y = y.ravel()
>>> fig = plt.figure() >>> ax = fig.add_subplot(111, projection='3d') >>> with np.errstate(divide='ignore'): # silence random axes3d warning ... ax.bar3d(x, y, z, dx, dy, bincounts)
Повторное использование номеров бинов и границ бинов с новыми значениями:
>>> ret2 = stats.binned_statistic_dd(data, -np.arange(600), ... binned_statistic_result=ret, ... statistic='mean')