dask.array.reduction

dask.array.reduction

dask.array.reduction(x, chunk, aggregate, axis=None, keepdims=False, dtype=None, split_every=None, combine=None, name=None, out=None, concatenate=True, output_size=1, meta=None, weights=None)[源代码]

简化的一般版本

参数
x: 数组

数据沿一个或多个轴减少

chunk: callable(x_chunk, [weights_chunk=None], axis, keepdims)

在解析dask图时首先执行的函数。此函数将并行应用于x的所有原始块。请参见下面的函数参数。

combine: 可调用对象(x_chunk, axis, keepdims), 可选

用于中间递归聚合的函数(见下文的 split_every)。如果省略,它默认为 aggregate。如果可以在少于 3 步内完成聚合,则根本不会调用它。

aggregate: callable(x_chunk, axis, keepdims)

在解析dask图时执行的最后一个函数,生成最终输出。即使减少的数组在减少的轴上只有一个块,它也总是被调用。

轴: int 或 int 序列, 可选

要聚合的轴或轴。如果省略,则沿所有轴聚合。

keepdims: 布尔值, 可选

缩减函数是否应保留缩减后的轴,使它们保持为 output_size 的大小,或者移除它们。

dtype: np.dtype

输出数据类型。此参数以前是可选的,但保留为 None 现在将引发异常。

split_every: int >= 2 或 dict(axis: int), 可选

确定递归聚合的深度。如果设置为等于或大于输入块的数量,聚合将分两步进行,每个输入块执行一次 chunk 函数,最后执行一次 aggregate 函数。如果设置为小于该值,将使用中间的 combine 函数,因此任何一个 combineaggregate 函数都不会有超过 split_every 个输入。聚合图的深度将为 \(log_{split_every}(输入块沿减少的轴)\)。设置为较低的值可以减少缓存大小和网络传输,但代价是更多的CPU和更大的dask图。

省略以让 dask 启发式地决定一个好的默认值。默认值也可以通过 dask.config 中的 split_every 键全局设置。

名称: str, 可选

中间节点和输出节点的键的前缀。如果省略,默认为函数名称。

out: 数组, 可选

另一个dask数组,其内容将被替换。省略以创建一个新数组。请注意,与numpy不同,此设置不会带来任何性能优势,但如果需要保留对先前存在的数组的引用,仍然可能有用。

concatenate: bool, 可选

如果为 True(默认值),chunk/combine 函数的输出在传递给 combine/aggregate 函数之前会被连接成一个单独的 np.array。如果为 False,combineaggregate 的输入将是前一步骤的原始输出的列表或单个输出,并且函数将不得不自行连接它们。如果 chunk 和/或 combine 步骤不产生 np.arrays,将此设置为 False 可能会有用。

output_size: int >= 1, 可选

aggregate 函数在缩减轴上的输出大小。如果 keepdims 为 False,则忽略。

权重类似数组, 可选

x 的缩减中使用的权重。将自动广播到 x 的形状,因此必须具有兼容的形状。例如,如果 x 具有形状 (3, 4),那么 weights 的可接受形状是 (3, 4)(4,)(3, 1)(1, 1)(1)()

返回
dask 数组
函数参数
x_chunk: numpy.ndarray

单个输入块。对于 chunk 函数,它是 x 的原始块之一。对于 combineaggregate 函数,它是前一个 chunkcombine 函数生成的输出的连接。如果 concatenate=False,它是一个包含前一个函数原始输出的列表。

weights_chunk: numpy.ndarray, 可选

仅适用于 chunk 函数。权重,形状与 x_chunk 相同,在减少单个输入块的过程中应用。如果未提供 weights,则函数可能会忽略此参数。当包含 weights_chunk 时,它必须紧随 x_chunk 参数之后,并且在未提供 weights 的情况下也必须有一个默认值。

axis: 元组

归一化的轴列表以减少,例如 (0, ) 标量、负数和无轴已被归一化。请注意,某些 numpy 缩减函数无法同时沿多个轴缩减,并且严格要求输入为整数。这些函数必须被包装以应对。

keepdims: bool

减少函数是否应保留减少的轴或移除它们。