dask.array.rechunk
dask.array.rechunk¶
- dask.array.rechunk(x, chunks='auto', threshold=None, block_size_limit=None, balance=False, method=None)[源代码]¶
将 dask 数组 x 中的块转换为新的块。
- 参数
- x: dask 数组
要重新分块的数组。
- chunks: int, tuple, dict 或 str, 可选
要创建的新块维度。-1 表示相应维度的全尺寸。默认是 “auto”,它会自动确定块大小。
- 阈值: int, 可选
在我们不介意引入中间步骤的图增长因子下。
- block_size_limit: int, 可选
我们希望生成的最大块大小(以字节为单位)默认设置为配置值
array.chunk-size
- 平衡bool, 默认 False
如果为真,尝试使每个块的大小相同。
这意味着
balance=True
将移除任何小的剩余块,因此使用x.rechunk(chunks=len(x) // N, balance=True)
几乎肯定会得到N
个块。- 方法: {‘任务’, ‘点对点’}, 可选.
要使用的重新分块方法。
示例
>>> import dask.array as da >>> x = da.ones((1000, 1000), chunks=(100, 100))
使用元组指定统一的块大小
>>> y = x.rechunk((1000, 10))
或者只用字典对特定维度进行分块
>>> y = x.rechunk({0: 1000})
使用值
-1
来指定你希望在一个维度上分成一个块,或者使用值"auto"
来指定 dask 可以自由地重新分块一个维度以达到均匀块大小的块。>>> y = x.rechunk({0: -1, 1: 'auto'}, block_size_limit=1e8)
如果块大小不能整除维度,那么 rechunk 会将任何不均匀的部分留在最后一个块中。
>>> x.rechunk(chunks=(400, -1)).chunks ((400, 400, 200), (1000,))
然而,如果你想要更平衡的块,并且不介意Dask为你选择不同的块大小,那么你可以使用
balance=True
选项。>>> x.rechunk(chunks=(400, -1), balance=True).chunks ((500, 500), (1000,))