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,))