用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。