Spec-Zone.ru › NumPy 1.11

numpy.histogram

numpy.histogram(a, bins=10, range=None, normed=False, weights=None, density=None) [source]

Вычисление гистограммы набора данных.

Параметры:

a : array_like

Входные данные. Гистограмма вычисляется по сплющенному массиву.

bins : int или последовательность скаляров или str, необязательно

Если bins — целое число, оно определяет количество равномерно распределенных интервалов (по умолчанию 10). Если bins — последовательность, она определяет границы интервалов, включая правую границу, что позволяет использовать неравномерную ширину интервалов.

Добавлена в версии 1.11.0.

Если bins — строка из списка ниже, histogram воспользуется выбранным методом для расчёта оптимальной ширины интервала и, как следствие, количества интервалов (см. Notes для получения более подробной информации об оценщиках) из данных, попадающих в указанный диапазон. Хотя ширина интервала будет оптимальной для фактических данных в диапазоне, количество интервалов будет вычислено для заполнения всего диапазона, включая пустые части. Для визуализации рекомендуется использовать опцию 'auto'. Для данных с весами автоматический выбор размера интервалов не поддерживается.

‘auto’

Максимум из оценок ‘sturges’ и ‘fd’. Обеспечивает хорошую общую производительность.

‘fd’ (оценка Фридмана-Дикона)

Робастная (устойчивая к выбросам) оценка, учитывающая изменчивость данных и размер данных.

‘doane’

Улучшенная версия оценки Стэрджеса, работающая лучше с ненормальными наборами данных.

‘scott’

Менее робастная оценка, учитывающая изменчивость данных и размер данных.

‘rice’

Оценка, не учитывающая изменчивость, а только размер данных. Часто переоценивает необходимое количество интервалов.

‘sturges’

По умолчанию в R, учитывает только размер данных. Оптимален только для гауссовых данных и недооценивает количество интервалов для больших не-гауссовых наборов данных.

‘sqrt’

Оценка квадратного корня (размера данных), используемая Excel и другими программами из-за скорости и простоты.

range : (float, float), необязательно

Диапазон нижних и верхних границ интервалов. Если не указан, диапазон просто (a.min(), a.max()). Значения вне диапазона игнорируются. Первый элемент диапазона должен быть меньше или равен второму. range влияет и на автоматическое вычисление интервалов. Хотя ширина интервала вычисляется оптимально на основе фактических данных в range, количество интервалов заполнит весь диапазон, включая части, не содержащие данные.

normed : bool, необязательно

Этот ключевой параметр устарел в Numpy 1.6 из-за путаницы/ошибок в поведении. Он будет удален в Numpy 2.0. Используйте ключевой параметр density вместо него. Если False, результат будет содержать количество выборок в каждом интервале. Если True, результат представляет значение функции плотности вероятности в интервале, нормированное таким образом, что интеграл по диапазону равен 1. Обратите внимание, что последнее поведение известно как ошибочное при неравномерной ширине интервалов; используйте density вместо него.

weights : array_like, необязательно

Массив весов, с такой же формой, как и a. Каждое значение в a вносит только свой связанный вес в подсчёт интервалов (вместо 1). Если density True, веса нормируются, так что интеграл плотности по диапазону остаётся равным 1.

density : bool, необязательно

Если False, результат будет содержать количество выборок в каждом интервале. Если True, результат представляет значение функции плотности вероятности в интервале, нормированное таким образом, что интеграл по диапазону равен 1. Обратите внимание, что сумма значений гистограммы не будет равна 1, если не выбраны интервалы единичной ширины; это не функция массы вероятности.

Переопределяет ключевой параметр normed при его предоставлении.

Возвращаемое значение:

hist : массив

Значения гистограммы. См. density и weights для описания возможной семантики.

bin_edges : массив типа float

Возвращает границы интервалов (length(hist)+1).

См. также

histogramdd, bincount, searchsorted, digitize

Примечания

Все интервалы, кроме последнего (правого), полуоткрытые. Другими словами, если bins:

[1, 2, 3, 4]

то первый интервал — [1, 2) (включая 1, но исключая 2), а второй — [2, 3). Однако последний интервал — [3, 4], который включает 4.

Добавлена в версии 1.11.0.

Методы оценки оптимального количества интервалов хорошо обоснованы в литературе и вдохновлены выбором, который предоставляет R для визуализации гистограмм. Обратите внимание, что количество интервалов, пропорциональное n^{1/3}, асимптотически оптимально, поэтому оно появляется в большинстве оценок. Это просто методы подстановки, которые дают хорошие начальные точки для количества интервалов. В уравнениях ниже h — ширина интервала, а n_h — количество интервалов. Все оценки, вычисляющие количество интервалов, пересчитываются на ширину интервала с использованием ptp данных. Конечное количество интервалов получается из ``np.round(np.ceil(range / h))`.

‘Auto’ (максимум из оценок ‘Sturges’ и ‘FD’)
Компромисс для получения хорошего значения. Для небольших наборов данных обычно выбирается значение Sturges, а для больших наборов данных — FD. Избегает чрезмерно консервативного поведения FD и Sturges для малых и больших наборов данных соответственно. Точка переключения обычно a.size \approx 1000.
‘FD’ (оценка Фридмана-Дикона)

h = 2 \frac{IQR}{n^{1/3}}

Ширина интервала пропорциональна межквартильному размаху (IQR) и обратно пропорциональна кубическому корню из a.size. Может быть слишком консервативной для небольших наборов данных, но довольно хорошей для больших наборов данных. IQR очень устойчив к выбросам.

‘Scott’

h = \sigma \sqrt[3]{\frac{24 * \sqrt{\pi}}{n}}

Ширина интервала пропорциональна стандартному отклонению данных и обратно пропорциональна кубическому корню из x.size. Может быть слишком консервативной для небольших наборов данных, но довольно хорошей для больших наборов данных. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценку Фридмана-Дикона в отсутствие выбросов.

‘Rice’

n_h = 2n^{1/3}

Количество интервалов пропорционально только кубическому корню из a.size. Он имеет тенденцию переоценивать количество интервалов и не учитывает изменчивость данных.

‘Sturges’

n_h = \log _{2}n+1

Количество интервалов — это двоичный логарифм от a.size. Эта оценка предполагает нормальность данных и слишком консервативна для больших ненормальных наборов данных. Это метод по умолчанию в R’s hist метод.

‘Doane’

n_h = 1 + \log_{2}(n) +
            \log_{2}(1 + \frac{|g_1|}{\sigma_{g_1})}

g_1 = mean[(\frac{x - \mu}{\sigma})^3]

\sigma_{g_1} = \sqrt{\frac{6(n - 2)}{(n + 1)(n + 3)}}

Улучшенная версия формулы Стэрджеса, дающая лучшие оценки для ненормальных наборов данных. Эта оценка пытается учесть асимметрию данных.

‘Sqrt’

n_h = \sqrt n

Самая простая и быстрая оценка. Учитывает только размер данных.

Примеры

>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
>>> np.histogram(np.arange(4), bins=np.arange(5), density=True)
(array([ 0.25,  0.25,  0.25,  0.25]), array([0, 1, 2, 3, 4]))
>>> np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
(array([1, 4, 1]), array([0, 1, 2, 3]))
>>> a = np.arange(5)
>>> hist, bin_edges = np.histogram(a, density=True)
>>> hist
array([ 0.5,  0. ,  0.5,  0. ,  0. ,  0.5,  0. ,  0.5,  0. ,  0.5])
>>> hist.sum()
2.4999999999999996
>>> np.sum(hist*np.diff(bin_edges))
1.0

Добавлена в версии 1.11.0.

Пример автоматического выбора интервалов, используя данные с 2 пиками и 2000 точками:

>>> import matplotlib.pyplot as plt
>>> rng = np.random.RandomState(10)  # deterministic random data
>>> a = np.hstack((rng.normal(size=1000),
...                rng.normal(loc=5, scale=2, size=1000)))
>>> plt.hist(a, bins='auto')  # plt.hist passes it's arguments to np.histogram
>>> plt.title("Histogram with 'auto' bins")
>>> plt.show()

(Исходный код, png, pdf)

../../_images/numpy-histogram-1.png

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.histogram.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API