dask.array.histogramdd
dask.array.histogramdd¶
- dask.array.histogramdd(sample, bins, range=None, normed=None, weights=None, density=None)[源代码]¶
被阻止的
numpy.histogramdd()变体。输入数据 (
sample) 的分块仅允许沿第0轴(行轴,对应于样本总数)进行。沿第1轴(列轴)分块的数据与此函数不兼容。如果使用权重,它们必须与输入样本一样沿第0轴分块。一个三维直方图的示例设置,其中样本形状为
(8, 3),权重形状为(8,),样本块将为((4, 4), (3,)),权重块将为((4, 4),),结构表如下:样本 (8 x 3)
权重
块
行
x
y
z
行
w
0
0
5
6
6
0
0.5
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。8
9
2
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。0.8
2
3
3
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。2
0.3
3
2
5
6
3
0.7
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。4
3
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。4
0.3
5
3
2
9
5
1.3
6
8
toctree是一个 reStructuredText 指令 ,这是一个非常多功能的标记。指令可以有参数、选项和内容。5
6
0.8
7
3
5
3
7
0.7
如果样本的第0维度和权重的第0维度(行)被分块不同,将会引发
ValueError。如果坐标分组((x, y, z) 三元组)被分块边界分开,那么将会引发ValueError。我们建议,如果您的数据是这种形式,请重新分块。数据的chunks属性(以及可选的权重)用于检查与阻塞算法的兼容性(如上所述);因此,您必须在来自``dask.dataframe``的集合上调用`to_dask_array`,即
dask.dataframe.Series或dask.dataframe.DataFrame。该函数还兼容 x、y 和 z 为具有相同分块的单独一维数组。在这种情况下,数据应以元组形式传递:
histogramdd((x, y, z), ...)- 参数
- 示例dask.array.Array (N, D) 或 dask.array.Array 序列
要进行直方图处理的多维数据。
注意当样本是一个 dask 数组序列时的不寻常解释:
当一个 (N, D) 的 dask 数组时,每一行都是一个样本(D 维空间中的坐标)。
当一个 dask 数组的序列时,序列中的每个元素都是单个坐标的值数组。
- bins描述箱边的数组序列,整数,或整数序列
bin 规范。
可能的binning配置有:
描述沿每个维度单调递增的箱边的数组序列。
一个表示每个维度将使用的总箱数的整数(这要求
range参数被定义)。一个整数序列,描述每个维度中要使用的总箱数(这需要定义
range参数)。
当区间由数组描述时,最右边的边缘是包含的。由数组描述的区间也允许非均匀的区间宽度。
- 范围成对的序列,可选
长度为 D 的序列,每个元素是一个 (最小值, 最大值) 元组,用于指定如果 bins 中没有明确给出边缘时的外部箱边缘。如果定义了,此参数需要为每个维度提供一个条目。与
numpy.histogramdd()不同,如果 bins 没有定义箱边缘,此参数是必需的(此函数不会自动使用给定维度中值的最小值和最大值,因为输入数据在 dask 中可能是惰性的)。- 标准化bool, 可选
这是密度参数的一个别名,其行为完全相同。为了避免与 histogram 的损坏参数混淆,应优先使用 density。
- 权重dask.array.Array, 可选
一个权重值的数组,用于衡量输入数据中的每个样本。权重的块必须与数据样本沿第0轴(行)的块相同。
- 密度bool, 可选
如果
False``(默认),返回的数组表示每个箱子中的样本数量。如果 ``True,返回的数组表示每个箱子的概率密度函数。
- 返回
- dask.array.Array
直方图的值。
- list(dask.array.Array)
表示每个维度上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()) np.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])