用法:
dask.array.histogramdd(sample, bins, range=None, normed=None, weights=None, density=None)
numpy.histogramdd()
的受阻變體。僅允許沿第 0(行)軸(對應於樣本總數的軸)對輸入數據(
sample
)進行分塊。沿第 1 軸(列)軸分塊的數據與此函數不兼容。如果使用權重,它們必須沿第 0 軸分塊,與輸入樣本相同。三維直方圖的示例設置,其中樣本形狀為
(8, 3)
且權重為形狀(8,)
,樣本塊為((4, 4), (3,))
且權重塊為((4, 4),)
結構表:樣品 (8 x 3)
權重
chunk
row
x
y
z
row
w
0
0
5
6
6
0
0.5
1
8
9
2
1
0.8
2
3
3
1
2
0.3
3
2
5
6
3
0.7
1
4
3
1
1
4
0.3
5
3
2
9
5
1.3
6
8
1
5
6
0.8
7
3
5
3
7
0.7
如果樣本第 0 維和權重第 0(行)維的分塊不同,則會引發
ValueError
。如果坐標分組((x,y,z)三重奏)由塊邊界分隔,則將引發ValueError
。如果數據是這種形式,我們建議您重新分塊。數據的塊屬性(和可選權重)用於檢查與阻塞算法的兼容性(如上所述);因此,您必須在來自
dask.dataframe
的集合上調用to_dask_array
,即dask.dataframe.Series
或dask.dataframe.DataFrame
。該函數還兼容
x
,y
和z
是具有相同分塊的單個 1D 數組。在這種情況下,數據應作為元組傳遞:histogramdd((x, y, z), ...)
- sample:dask.array.Array (N, D) 或 dask.array.Array 的序列
要直方圖的多維數據。
注意當樣本是 dask Arrays 序列時對樣本的不尋常解釋:
- 當一個 (N, D) dask Array 時,每一行都是樣本中的一個條目(在 D 維空間中的坐標)。
- 當一個 dask Arrays 序列時,序列中的每個元素都是單個坐標值的數組。
- bins:說明 bin 邊、整數或整數序列的數組序列
bin 規範。
可能的分箱配置是:
- 說明沿每個維度單調增加的 bin 邊的數組序列。
- 單個 int 說明將在每個維度中使用的 bin 總數(這需要定義
range
參數)。 - 說明要在每個維度中使用的 bin 總數的整數序列(這需要定義
range
參數)。
當 bin 由數組說明時,包括最右邊的邊。由數組說明的 bin 也允許不均勻的 bin 寬度。
- range:對序列,可選
長度為 D 的序列,如果在
bins
中未明確給出邊,則每個 (min, max) 元組給出要使用的外部 bin 邊。如果已定義,則此參數必須具有每個維度的條目。與numpy.histogramdd()
不同,如果bins
未定義 bin 邊,則需要此參數(此函數不會自動使用給定維度中值的最小值和最大值,因為輸入數據可能會延遲)。- normed:布爾型,可選
行為相同的密度參數的別名。為避免與
histogram
,density
的損壞參數混淆,應首選。- weights:dask.array.Array,可選
對輸入數據中的每個樣本進行加權的值數組。權重的塊必須與沿數據樣本的第 0(行)軸的塊相同。
- density:布爾型,可選
如果
False
(默認),返回的數組表示每個bin中的樣本數。如果True
,則返回的數組表示每個 bin 的概率密度函數。
- dask.array.Array
直方圖的值。
- 列表(dask.array.Array)
表示沿每個維度的 bin 邊的數組序列。
參數:
返回:
例子:
使用沿每個維度的不同 bin 邊計算 5 個塊中的直方圖:
>>> import dask.array as da >>> x = da.random.uniform(0, 1, size=(1000, 3), chunks=(200, 3)) >>> edges = [ ... np.linspace(0, 1, 5), # 4 bins in 1st dim ... np.linspace(0, 1, 6), # 5 in the 2nd ... np.linspace(0, 1, 4), # 3 in the 3rd ... ] >>> h, edges = da.histogramdd(x, bins=edges) >>> result = h.compute() >>> result.shape (4, 5, 3)
按總數及其範圍定義箱,以及使用權重:
>>> bins = (4, 5, 3) >>> ranges = ((0, 1),) * 3 # expands to ((0, 1), (0, 1), (0, 1)) >>> w = da.random.uniform(0, 1, size=(1000,), chunks=x.chunksize[0]) >>> h, edges = da.histogramdd(x, bins=bins, range=ranges, weights=w) >>> np.isclose(h.sum().compute(), w.sum().compute()) True
使用一維數組序列作為輸入:
>>> x = da.array([2, 4, 2, 4, 2, 4]) >>> y = da.array([2, 2, 4, 4, 2, 4]) >>> z = da.array([4, 2, 4, 2, 4, 2]) >>> bins = ([0, 3, 6],) * 3 >>> h, edges = da.histogramdd((x, y, z), bins) >>> h dask.array<sum-aggregate, shape=(2, 2, 2), dtype=float64, chunksize=(2, 2, 2), chunktype=numpy.ndarray> >>> edges[0] dask.array<array, shape=(3,), dtype=int64, chunksize=(3,), chunktype=numpy.ndarray> >>> h.compute() array([[[0., 2.], [0., 1.]], [[1., 0.], [2., 0.]]]) >>> edges[0].compute() array([0, 3, 6]) >>> edges[1].compute() array([0, 3, 6]) >>> edges[2].compute() array([0, 3, 6])
相關用法
- Python dask.array.histogram2d用法及代碼示例
- Python dask.array.histogram用法及代碼示例
- Python dask.array.hypot用法及代碼示例
- Python dask.array.hstack用法及代碼示例
- Python dask.array.stats.ttest_ind用法及代碼示例
- Python dask.array.ma.masked_values用法及代碼示例
- Python dask.array.divmod用法及代碼示例
- Python dask.array.negative用法及代碼示例
- Python dask.array.overlap.map_overlap用法及代碼示例
- Python dask.array.stats.ttest_rel用法及代碼示例
- Python dask.array.ma.average用法及代碼示例
- Python dask.array.vstack用法及代碼示例
- Python dask.array.isneginf用法及代碼示例
- Python dask.array.ma.masked_array用法及代碼示例
- Python dask.array.matmul用法及代碼示例
- Python dask.array.random.weibull用法及代碼示例
- Python dask.array.Array.compute_chunk_sizes用法及代碼示例
- Python dask.array.random.geometric用法及代碼示例
- Python dask.array.around用法及代碼示例
- Python dask.array.gradient用法及代碼示例
注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.array.histogramdd。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。