numpy.histogramdd(sample, bins=10, range=None, normed=None, weights=None, density=None)[source]

Compute the multidimensional histogram of some data.

sample(N, D) array, or (D, N) array_like

The data to be histogrammed.

Note the unusual interpretation of sample when an array_like:

  • When an array, each row is a coordinate in a D-dimensional space - such as histogramdd(np.array([p1, p2, p3])).

  • When an array_like, each element is the list of values for single coordinate - such as histogramdd((X, Y, Z)).

The first form should be preferred.

binssequence or int, optional

The bin specification:

  • A sequence of arrays describing the monotonically increasing bin edges along each dimension.

  • The number of bins for each dimension (nx, ny, … =bins)

  • The number of bins for all dimensions (nx=ny=…=bins).

rangesequence, optional

A sequence of length D, each an optional (lower, upper) tuple giving the outer bin edges to be used if the edges are not given explicitly in bins. An entry of None in the sequence results in the minimum and maximum values being used for the corresponding dimension. The default, None, is equivalent to passing a tuple of D None values.

densitybool, optional

If False, the default, returns the number of samples in each bin. If True, returns the probability density function at the bin, bin_count / sample_count / bin_volume.

normedbool, optional

An alias for the density argument that behaves identically. To avoid confusion with the broken normed argument to histogram, density should be preferred.

weights(N,) array_like, optional

An array of values w_i weighing each sample (x_i, y_i, z_i, …). Weights are normalized to 1 if normed is True. If normed is False, the values of the returned histogram are equal to the sum of the weights belonging to the samples falling into each bin.


The multidimensional histogram of sample x. See normed and weights for the different possible semantics.


A list of D arrays describing the bin edges for each dimension.

See also


1-D histogram


2-D histogram


>>> r = np.random.randn(100,3)
>>> H, edges = np.histogramdd(r, bins = (5, 8, 4))
>>> H.shape, edges[0].size, edges[1].size, edges[2].size
((5, 8, 4), 6, 9, 5)