Spec-Zone.ru › NumPy 1.14

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.0 из-за путаницы/ошибок в поведении. Оно будет удалено в NumPy 2.0.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

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

‘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')  # arguments are passed to np.histogram
>>> plt.title("Histogram with 'auto' bins")
>>> plt.show()
../../_images/numpy-histogram-1.png

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/generated/numpy.histogram.html

Spec-Zone.ru

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