Spec-Zone.ru › NumPy 1.17

numpy.histogram2d

numpy.histogram2d(x, y, bins=10, range=None, normed=None, weights=None, density=None) [source]

Вычислить двумерную гистограмму двух наборов данных.

Параметры:
x : array_like, shape (N,)

Массив, содержащий координаты x точек, которые нужно поместить в гистограмму.

y : array_like, shape (N,)

Массив, содержащий координаты y точек, которые нужно поместить в гистограмму.

bins : int or array_like or [int, int] or [array, array], optional

Спецификация бинов:

  • Если int, то количество бинов для двух измерений (nx=ny=bins).
  • Если array_like, то границы бинов для двух измерений (x_edges=y_edges=bins).
  • Если [int, int], то количество бинов в каждом измерении (nx, ny = bins).
  • Если [массив, массив], то границы бинов в каждом измерении (x_edges, y_edges = bins).
  • Сочетание [int, массив] или [массив, int], где int — количество бинов, а массив — границы бинов.
range : array_like, shape(2,2), optional

Левые и правые границы бинов вдоль каждого измерения (если не указано явно в параметрах bins) [[xmin, xmax], [ymin, ymax]]. Все значения вне этого диапазона будут считаться выбросами и не будут учитываться в гистограмме.

density : bool, optional

Если False, по умолчанию, возвращает количество выборок в каждом бине. Если True, возвращает функцию плотности вероятности в бине, bin_count / sample_count / bin_area.

normed : bool, optional

Псевдоним для аргумента density, который ведет себя идентично. Чтобы избежать путаницы с сломанным аргументом normed в histogram, следует предпочитать density.

weights : array_like, shape(N,), optional

Массив весов w_i для каждой выборки (x_i, y_i). Веса нормализуются до 1, если normed равно True. Если normed равно False, значения возвращаемой гистограммы равны сумме весов, принадлежащих выборкам, попадающим в каждый bin.

Возвращает:
H : ndarray, shape(nx, ny)

Двумерная гистограмма выборок x и y. Значения в x помещаются в гистограмму по первому измерению, а значения в y — по второму измерению.

xedges : ndarray, shape(nx+1,)

Границы бинов по первому измерению.

yedges : ndarray, shape(ny+1,)

Границы бинов по второму измерению.

См. также

histogram
1D гистограмма
histogramdd
Многомерная гистограмма

Примечания

Когда normed равно True, то возвращаемая гистограмма — плотность выборки, определённая таким образом, что сумма по бинным значениям произведения bin_value * bin_area равна 1.

Обратите внимание, что гистограмма не следует картезианской конвенции, где значения x находятся на оси абсцисс, а значения y на оси ординат. Вместо этого x помещается в гистограмму по первому измерению массива (вертикально), а y по второму измерению массива (горизонтально). Это обеспечивает совместимость с histogramdd.

Примеры

>>> from matplotlib.image import NonUniformImage
>>> import matplotlib.pyplot as plt

Построить двумерную гистограмму с переменной шириной бинов. Сначала определите границы бинов:

>>> xedges = [0, 1, 3, 5]
>>> yedges = [0, 2, 3, 4, 6]

Затем мы создаём гистограмму H со случайным содержимым бинов:

>>> x = np.random.normal(2, 1, 100)
>>> y = np.random.normal(1, 1, 100)
>>> H, xedges, yedges = np.histogram2d(x, y, bins=(xedges, yedges))
>>> H = H.T  # Let each row list bins with common y range.

imshow может отображать только квадратные бины:

>>> fig = plt.figure(figsize=(7, 3))
>>> ax = fig.add_subplot(131, title='imshow: square bins')
>>> plt.imshow(H, interpolation='nearest', origin='low',
...         extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
<matplotlib.image.AxesImage object at 0x...>

pcolormesh может отображать фактические границы:

>>> ax = fig.add_subplot(132, title='pcolormesh: actual edges',
...         aspect='equal')
>>> X, Y = np.meshgrid(xedges, yedges)
>>> ax.pcolormesh(X, Y, H)
<matplotlib.collections.QuadMesh object at 0x...>

NonUniformImage может использоваться для отображения фактических границ бинов с интерполяцией:

>>> ax = fig.add_subplot(133, title='NonUniformImage: interpolated',
...         aspect='equal', xlim=xedges[[0, -1]], ylim=yedges[[0, -1]])
>>> im = NonUniformImage(ax, interpolation='bilinear')
>>> xcenters = (xedges[:-1] + xedges[1:]) / 2
>>> ycenters = (yedges[:-1] + yedges[1:]) / 2
>>> im.set_data(xcenters, ycenters, H)
>>> ax.images.append(im)
>>> plt.show()
../../_images/numpy-histogram2d-1.png

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

Spec-Zone.ru

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