Согласно https://numpy.org/doc/stable/reference/generated/numpy.histogram.html
numpy.histogram(a, bins=10, range=None, normed=None, weights=None, density=None)
===========================
Параметры
===========================
a: array_like
Входные данные. Гистограмма вычисляется по сглаженному массиву.
binsint или последовательность скаляров или str, необязательно
Если bins имеет значение int, оно определяет количество бинов равной ширины в заданном диапазоне (по умолчанию 10). Если интервалы представляют собой последовательность, она определяет монотонно увеличивающийся массив ребер интервалов, включая крайний правый край, что допускает неравномерную ширину интервалов.
Новое в версии 1.11.0.
=============================
Если bins — это строка, она определяет метод, используемый для вычисления оптимальной ширины бина, как определено параметром histogram_bin_edges.Диапазон (с плавающей запятой, с плавающей запятой), необязательный
Нижний и верхний диапазон бункеров. Если не указан, диапазон просто (a.min(), a.max()). Значения вне диапазона игнорируются. Первый элемент диапазона должен быть меньше или равен второму. диапазон также влияет на автоматический расчет бина. В то время как ширина бина вычисляется как оптимальная на основе фактических данных в пределах диапазона, счетчик бина будет заполнять весь диапазон, включая части, не содержащие данных.
normedbool, необязательный
Устарело с версии 1.6.0.
============================
Два примера Пайтон кода для распределения Лапласа и Гаусса
============================
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# Затем определите подходящую функцию и некоторый пример набора данных.
# Образец набора данных предназначен только для этого вопроса.
# Вы должны использовать свой набор данных и определить свою функцию,
# которую вы хотите установить
loc, scale = 0., 1.
x = np.random.laplace(loc, scale, 1000)
def laplacian(x,amplitude,loc,scale):
return amplitude*np.exp(-abs(x-loc)/scale)/(2.*scale)
# Подгонка кривой и ее построение
bin_heights, bin_borders = np.histogram(x, bins='auto')
bin_widths = np.diff(bin_borders)
bin_centers = bin_borders[:-1] + bin_widths / 2
popt, _ = curve_fit(laplacian, bin_centers, bin_heights, p0=[1., 0., 1.])
x_interval_for_fit = np.linspace(bin_borders[0], bin_borders[-1], 10000)
plt.bar(bin_centers, bin_heights, width=bin_widths, label='histogram')
plt.plot(x_interval_for_fit,laplacian(x_interval_for_fit,*popt),label='fit',c='red')
plt.legend()
plt.show()
# Подгонка кривой и ее построение
No comments:
Post a Comment