binned_statistic_2d#
- scipy.stats.binned_statistic_2d(x, y, values, statistic='mean', bins=10, range=None, expand_binnumbers=False)[原始碼]#
為一或多組資料計算雙維分箱統計。
這是 histogram2d 函數的推廣。直方圖將空間劃分為箱,並返回每個箱中點的計數。此函數允許計算每個箱內的值(或值集)的總和、平均值、中位數或其他統計量。
- 參數:
- x(N,) array_like
沿第一維分箱的值序列。
- y(N,) array_like
沿第二維分箱的值序列。
- values(N,) array_like 或 (N,) array_like 列表
將在其上計算統計量的資料。這必須與 x 的形狀相同,或是一個序列列表 - 每個序列都與 x 的形狀相同。如果 values 是這樣一個列表,則將獨立計算每個列表的統計量。
- statistic字串或可呼叫物件,可選
要計算的統計量(預設為 ‘mean’)。以下統計量可用
‘mean’ : 計算每個箱內點的值的平均值。空箱將以 NaN 表示。
‘std’ : 計算每個箱內的標準差。這是使用 ddof=0 隱式計算的。
‘median’ : 計算每個箱內點的值的中位數。空箱將以 NaN 表示。
‘count’ : 計算每個箱內點的計數。這與未加權的直方圖相同。values 陣列未被參考。
‘sum’ : 計算每個箱內點的值的總和。這與加權直方圖相同。
‘min’ : 計算每個箱內點的值的最小值。空箱將以 NaN 表示。
‘max’ : 計算每個箱內點的值的最大值。空箱將以 NaN 表示。
function : 使用者定義的函數,它接受一維值陣列,並輸出單個數值統計量。此函數將在每個箱中的值上呼叫。空箱將以 function([]) 表示,如果這返回錯誤,則以 NaN 表示。
- binsint 或 [int, int] 或 array_like 或 [array, array],可選
箱規格
兩個維度的箱數量 (nx = ny = bins),
每個維度的箱數量 (nx, ny = bins),
兩個維度的箱邊緣 (x_edge = y_edge = bins),
每個維度的箱邊緣 (x_edge, y_edge = bins)。
如果指定了箱邊緣,則箱的數量將為 (nx = len(x_edge)-1, ny = len(y_edge)-1)。
- range(2,2) array_like,可選
沿每個維度的箱的最左邊和最右邊的邊緣(如果未在 bins 參數中明確指定):[[xmin, xmax], [ymin, ymax]]。超出此範圍的所有值將被視為離群值,並且不會在直方圖中統計。
- expand_binnumbersbool,可選
‘False’ (預設):返回的 binnumber 是形狀為 (N,) 的陣列,包含線性化的箱索引。 ‘True’:返回的 binnumber 被「展開」為形狀為 (2,N) 的 ndarray,其中每行給出相應維度中的箱編號。請參閱返回的 binnumber 值,以及 範例 區段。
在 0.17.0 版本中新增。
- 返回:
- statistic(nx, ny) ndarray
每個二維箱中所選統計量的值。
- x_edge(nx + 1) ndarray
沿第一維的箱邊緣。
- y_edge(ny + 1) ndarray
沿第二維的箱邊緣。
- binnumber(N,) 整數陣列 或 (2,N) 整數 ndarray
這會為 sample 的每個元素分配一個整數,表示該觀測值落入的箱。表示形式取決於 expand_binnumbers 參數。有關詳細資訊,請參閱 Notes。
註解
箱邊緣:除了最後一個(最右邊)箱之外,所有箱都是半開區間。換句話說,如果 bins 是
[1, 2, 3, 4]
,則第一個箱是[1, 2)
(包括 1,但不包括 2),第二個箱是[2, 3)
。但是,最後一個箱是[3, 4]
,它包括 4。binnumber:此傳回的引數會為 sample 的每個元素分配一個整數,表示其所屬的箱。表示形式取決於 expand_binnumbers 引數。如果為 ‘False’(預設):傳回的 binnumber 是形狀為 (N,) 的陣列,其中包含線性化索引,將 sample 的每個元素對應到其對應的箱(使用row-major順序)。請注意,傳回的線性化箱索引用於在外部箱邊緣具有額外箱的陣列,以捕獲定義的箱邊界之外的值。如果為 ‘True’:傳回的 binnumber 是形狀為 (2,N) 的 ndarray,其中每行分別指示每個維度的箱位置。在每個維度中,i 的箱編號表示對應值介於 (D_edge[i-1], D_edge[i]) 之間,其中 ‘D’ 是 ‘x’ 或 ‘y’。
在 0.11.0 版本中新增。
範例
>>> from scipy import stats
使用明確的箱邊緣計算計數
>>> x = [0.1, 0.1, 0.1, 0.6] >>> y = [2.1, 2.6, 2.1, 2.1] >>> binx = [0.0, 0.5, 1.0] >>> biny = [2.0, 2.5, 3.0] >>> ret = stats.binned_statistic_2d(x, y, None, 'count', bins=[binx, biny]) >>> ret.statistic array([[2., 1.], [1., 0.]])
每個樣本放置在其中的箱由傳回的 binnumber 參數給出。預設情況下,這些是線性化的箱索引
>>> ret.binnumber array([5, 6, 5, 9])
箱索引也可以使用 expand_binnumbers 參數展開為每個維度的單獨條目
>>> ret = stats.binned_statistic_2d(x, y, None, 'count', bins=[binx, biny], ... expand_binnumbers=True) >>> ret.binnumber array([[1, 1, 1, 2], [1, 2, 1, 1]])
這顯示前三個元素屬於 x 箱 1,第四個元素屬於 x 箱 2;y 也是如此。