Spec-Zone.ru › NumPy 1.13

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 : массив dtype 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. Эта оценка предполагает нормальность данных и является слишком консервативной для больших, ненормальных наборов данных. Это метод по умолчанию в методе R 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')  # arguments are passed to np.histogram
>>> plt.title("Histogram with 'auto' bins")
>>> plt.show()

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

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

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

Spec-Zone.ru

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