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). ЕслиdensityTrue, веса нормируются, так что интеграл плотности по диапазону остаётся равным 1.density : bool, необязательно
Если
False, результат будет содержать количество выборок в каждом интервале. ЕслиTrue, результат представляет значение функции плотности вероятности в интервале, нормированное таким образом, что интеграл по диапазону равен 1. Обратите внимание, что сумма значений гистограммы не будет равна 1, если не выбраны интервалы единичной ширины; это не функция массы вероятности.Переопределяет ключевой параметр
normedпри его предоставлении.Возвращаемое значение: hist : массив
Значения гистограммы. См.
densityиweightsдля описания возможной семантики.bin_edges : массив типа float
Возвращает границы интервалов
(length(hist)+1).См. также
Примечания
Все интервалы, кроме последнего (правого), полуоткрытые. Другими словами, если
bins:[1, 2, 3, 4]
то первый интервал —
[1, 2)(включая 1, но исключая 2), а второй —[2, 3). Однако последний интервал —[3, 4], который включает 4.Добавлена в версии 1.11.0.
Методы оценки оптимального количества интервалов хорошо обоснованы в литературе и вдохновлены выбором, который предоставляет R для визуализации гистограмм. Обратите внимание, что количество интервалов, пропорциональное
, асимптотически оптимально, поэтому оно появляется в большинстве оценок. Это просто методы подстановки, которые дают хорошие начальные точки для количества интервалов. В уравнениях ниже
— ширина интервала, а
— количество интервалов. Все оценки, вычисляющие количество интервалов, пересчитываются на ширину интервала с использованием ptpданных. Конечное количество интервалов получается из ``np.round(np.ceil(range / h))`.- ‘Auto’ (максимум из оценок ‘Sturges’ и ‘FD’)
- Компромисс для получения хорошего значения. Для небольших наборов данных обычно выбирается значение Sturges, а для больших наборов данных — FD. Избегает чрезмерно консервативного поведения FD и Sturges для малых и больших наборов данных соответственно. Точка переключения обычно
. - ‘FD’ (оценка Фридмана-Дикона)
-

Ширина интервала пропорциональна межквартильному размаху (IQR) и обратно пропорциональна кубическому корню из a.size. Может быть слишком консервативной для небольших наборов данных, но довольно хорошей для больших наборов данных. IQR очень устойчив к выбросам.
- ‘Scott’
-
![h = \sigma \sqrt[3]{\frac{24 * \sqrt{\pi}}{n}}](https://docs.scipy.org/doc/numpy-1.11.0/_images/math/baec7205229b9b4b064b5804e18773b552442812.png)
Ширина интервала пропорциональна стандартному отклонению данных и обратно пропорциональна кубическому корню из
x.size. Может быть слишком консервативной для небольших наборов данных, но довольно хорошей для больших наборов данных. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценку Фридмана-Дикона в отсутствие выбросов. - ‘Rice’
-

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

Количество интервалов — это двоичный логарифм от
a.size. Эта оценка предполагает нормальность данных и слишком консервативна для больших ненормальных наборов данных. Это метод по умолчанию в R’shistметод. - ‘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)}}](https://docs.scipy.org/doc/numpy-1.11.0/_images/math/763ef27d79b256d5d000e2e698c20cb831731821.png)
Улучшенная версия формулы Стэрджеса, дающая лучшие оценки для ненормальных наборов данных. Эта оценка пытается учесть асимметрию данных.
- ‘Sqrt’
-

Самая простая и быстрая оценка. Учитывает только размер данных.
Примеры
>>> 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)
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/generated/numpy.histogram.html