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).См. также
Примечания
Все интервалы, кроме последнего (правого), являются полуоткрытыми. Другими словами, если
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’
-
Ширина интервала пропорциональна стандартному отклонению данных и обратно пропорциональна кубовому корню от
x.size. Может быть слишком консервативным для небольших наборов данных, но довольно хорошим для больших. Стандартное отклонение не очень устойчиво к выбросам. Значения очень похожи на оценку Фридмана-Дикониса в отсутствие выбросов. - ‘Rice’
-
Количество интервалов пропорционально только кубовому корню от
a.size. Он имеет тенденцию переоценивать количество интервалов и не учитывает изменчивость данных. - ‘Sturges’
-
Количество интервалов — логарифм по основанию 2 от
a.size. Эта оценка предполагает нормальность данных и является слишком консервативной для больших, ненормальных наборов данных. Это метод по умолчанию в методеhistв R. - ‘Doane’
-
Улучшенная версия формулы Стерджеса, которая дает лучшие оценки для ненормализованных наборов данных. Эта оценка пытается учесть асимметрию данных.
- ‘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') # arguments are passed to np.histogram >>> plt.title("Histogram with 'auto' bins") >>> plt.show()
© 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