本文簡要介紹 python 語言中 numpy.histogram2d
的用法。
用法:
numpy.histogram2d(x, y, bins=10, range=None, normed=None, weights=None, density=None)
計算兩個數據樣本的二維直方圖。
- x: 數組, 形狀 (N,)
包含要進行直方圖分析的點的 x 坐標的數組。
- y: 數組, 形狀 (N,)
包含要直方圖的點的 y 坐標的數組。
- bins: int or 數組 or [int, int] or [array, array], 可選
箱規格:
如果是 int,則為二維的 bin 數量 (nx=ny=bins)。
如果 數組,則兩個維度的 bin 邊 (x_edges=y_edges=bins)。
如果 [int, int],每個維度的 bin 數(nx, ny = bins)。
如果 [array, array],則每個維度中的 bin 邊 (x_edges, y_edges = bins)。
[int, array] 或 [array, int] 的組合,其中 int 是 bin 的數量,array 是 bin 的邊。
- range: 數組,形狀(2,2),可選
沿每個維度的 bin 的最左側和最右側邊(如果未在箱子參數):
[[xmin, xmax], [ymin, ymax]]
.此範圍之外的所有值都將被視為異常值,並且不計入直方圖中。- density: 布爾型,可選
如果默認為 False,則返回每個 bin 中的樣本數。如果為真,則返回概率密度函數在箱子,
bin_count / sample_count / bin_area
.- normed: 布爾型,可選
行為相同的密度參數的別名。為了避免與破壞的規範論證混淆numpy.histogram,密度應該是首選。
- weights: 數組,形狀(N,),可選
一組值
w_i
稱量每個樣品(x_i, y_i)
.如果權重歸一化為 1規範的是真的。如果規範的為 False,返回的直方圖的值等於屬於每個 bin 的樣本的權重之和。
- H: ndarray,形狀(nx,ny)
樣本 x 和 y 的二維直方圖。 x 中的值沿第一維進行直方圖,y 中的值沿第二維進行直方圖。
- xedges: ndarray,形狀(nx+1,)
bin 沿第一個維度邊。
- yedges: ndarray,形狀(ny+1,)
箱沿第二個維度邊。
參數:
返回:
注意:
什麽時候規範的為 True,則返回的直方圖是樣本密度,定義為使得產品的 bin 上的總和
bin_value * bin_area
是 1。請注意,直方圖不遵循笛卡爾約定,其中x值在橫坐標和y縱坐標軸上的值。相當,x沿數組的第一個維度(垂直)進行直方圖,並且y沿數組的第二維(水平)。這確保了與numpy.histogramdd.
例子:
>>> from matplotlib.image import NonUniformImage >>> import matplotlib.pyplot as plt
構建具有可變 bin 寬度的二維直方圖。首先定義 bin 邊:
>>> xedges = [0, 1, 3, 5] >>> yedges = [0, 2, 3, 4, 6]
接下來我們創建一個帶有隨機 bin 內容的直方圖 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)) >>> # Histogram does not follow Cartesian convention (see Notes), >>> # therefore transpose H for visualization purposes. >>> H = H.T
imshow
隻能顯示方形箱:>>> fig = plt.figure(figsize=(7, 3)) >>> ax = fig.add_subplot(131, title='imshow: square bins') >>> plt.imshow(H, interpolation='nearest', origin='lower', ... 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
可用於顯示帶有插值的實際 bin 邊:>>> 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()
也可以在不指定 bin 邊的情況下構造二維直方圖:
>>> # Generate non-symmetric test data >>> n = 10000 >>> x = np.linspace(1, 100, n) >>> y = 2*np.log(x) + np.random.rand(n) - 0.5 >>> # Compute 2d histogram. Note the order of x/y and xedges/yedges >>> H, yedges, xedges = np.histogram2d(y, x, bins=20)
現在我們可以使用
pcolormesh
和hexbin
繪製直方圖以進行比較。>>> # Plot histogram using pcolormesh >>> fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True) >>> ax1.pcolormesh(xedges, yedges, H, cmap='rainbow') >>> ax1.plot(x, 2*np.log(x), 'k-') >>> ax1.set_xlim(x.min(), x.max()) >>> ax1.set_ylim(y.min(), y.max()) >>> ax1.set_xlabel('x') >>> ax1.set_ylabel('y') >>> ax1.set_title('histogram2d') >>> ax1.grid()
>>> # Create hexbin plot for comparison >>> ax2.hexbin(x, y, gridsize=20, cmap='rainbow') >>> ax2.plot(x, 2*np.log(x), 'k-') >>> ax2.set_title('hexbin') >>> ax2.set_xlim(x.min(), x.max()) >>> ax2.set_xlabel('x') >>> ax2.grid()
>>> plt.show()
相關用法
- Python numpy histogramdd用法及代碼示例
- Python numpy histogram_bin_edges用法及代碼示例
- Python numpy histogram用法及代碼示例
- Python numpy hamming用法及代碼示例
- Python numpy hermite.hermfromroots用法及代碼示例
- Python numpy hermite_e.hermediv用法及代碼示例
- Python numpy hsplit用法及代碼示例
- Python numpy hermite.hermline用法及代碼示例
- Python numpy hermite.hermpow用法及代碼示例
- Python numpy hermite.hermx用法及代碼示例
- Python numpy hermite_e.hermefromroots用法及代碼示例
- Python numpy hermite.hermmul用法及代碼示例
- Python numpy hermite.herm2poly用法及代碼示例
- Python numpy hermite.hermsub用法及代碼示例
- Python numpy hermite_e.hermeline用法及代碼示例
- Python numpy hermite_e.hermeint用法及代碼示例
- Python numpy hermite_e.hermeadd用法及代碼示例
- Python numpy hstack用法及代碼示例
- Python numpy hermite_e.poly2herme用法及代碼示例
- Python numpy hermite.hermdiv用法及代碼示例
- Python numpy hermite_e.hermevander用法及代碼示例
- Python numpy hermite_e.hermepow用法及代碼示例
- Python numpy hermite.poly2herm用法及代碼示例
- Python numpy hermite_e.hermetrim用法及代碼示例
- Python numpy hermite_e.hermezero用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.histogram2d。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。