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.Seriesdask.dataframe.DataFrame

该函数还兼容 xyz 为具有相同分块的单独一维数组。在这种情况下,数据应以元组形式传递: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边缘的数组序列。

参见

histogram

示例

使用每个维度上不同的箱边计算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])