dask.array.core.normalize_chunks

dask.array.core.normalize_chunks

dask.array.core.normalize_chunks(chunks, shape=None, limit=None, dtype=None, previous_chunks=None)[源代码]

将块标准化为元组的元组

这接受多种输入类型和信息,并生成一个完整的元组结果,适用于传递给 Array 或 rechunk 或任何其他创建 Dask 数组的操作。

参数
chunks: tuple, int, dict, 或 string

要进行标准化的块。有关更多详细信息,请参见下面的示例。

shape: Tuple[int]

数组的形状

limit: int (可选)

如果允许自由选择,目标的最大块大小(以字节为单位)

dtype: np.dtype
previous_chunks: Tuple[Tuple[int]] 可选

从之前的数组中提取的块,在重新分块自动维度时应作为灵感来源。如果没有提供但存在自动分块,那么自动维度将优先选择类似方形的块形状。

示例

完全显式的元组-元组

>>> from dask.array.core import normalize_chunks
>>> normalize_chunks(((2, 2, 1), (2, 2, 2)), shape=(5, 6))
((2, 2, 1), (2, 2, 2))

指定统一的块大小

>>> normalize_chunks((2, 2), shape=(5, 6))
((2, 2, 1), (2, 2, 2))

清理缺失的外部元组

>>> normalize_chunks((3, 2), (5,))
((3, 2),)

清理列表为元组

>>> normalize_chunks([[2, 2], [3, 3]])
((2, 2), (3, 3))

扩展整数输入 10 -> (10, 10)

>>> normalize_chunks(10, shape=(30, 5))
((10, 10, 10), (5,))

展开字典输入

>>> normalize_chunks({0: 2, 1: 3}, shape=(6, 6))
((2, 2, 2), (3, 3))

值 -1 和 None 被映射为全尺寸

>>> normalize_chunks((5, -1), shape=(10, 10))
((5, 5), (10,))
>>> normalize_chunks((5, None), shape=(10, 10))
((5, 5), (10,))

使用值“auto”来自动确定某些维度上的块大小。这使用 limit=dtype= 关键字来确定块的大小。术语“auto”可以在任何可以使用整数的地方使用。有关更多信息,请参阅数组分块文档。

>>> normalize_chunks(("auto",), shape=(20,), limit=5, dtype='uint8')
((5, 5, 5, 5),)
>>> normalize_chunks("auto", (2, 3), dtype=np.int32)
((2,), (3,))

你也可以使用字节大小(参见 dask.utils.parse_bytes())来代替“auto”,以请求特定的大小

>>> normalize_chunks("1kiB", shape=(2000,), dtype='float32')
((256, 256, 256, 256, 256, 256, 256, 208),)

尊重空维度

>>> normalize_chunks(())
()
>>> normalize_chunks((), ())
()
>>> normalize_chunks((1,), ())
()
>>> normalize_chunks((), shape=(0, 0))
((0,), (0,))

处理 NaN

>>> normalize_chunks((1, (np.nan,)), (1, np.nan))
((1,), (nan,))