根据dask文档,可以通过以下三种方式之一指定块:
- 像1000这样的块大小
- 像(1000,1000)这样的块状形状
- 所有维度的所有块的显式大小,如((1000,1000,500),(400,400))
您的块输入将被标准化并以第三个和最明确的形式存储.
在尝试使用visualize()函数了解块的工作方式之后,仍然有一些我不确定的事情:
如果输入是标准化的,那么我选择哪种输入形式是否重要?
Blocksize意味着每个块的大小为X,即1000. blockshape输入指定了什么?
给出blockhape输入时,参数的顺序是否有所不同?它与阵列/矩阵的形状有什么关系?
该列表中较低的表单更明确,允许块形状更大的不对称性.
我们将通过chunks以下数组的一系列示例来讨论这个问题:
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
我们展示了不同的chunks参数如何将数组拆分成不同的块
chunks=3对称块大小为3
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
chunks=2对称块大小为2
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
chunks=(3, 2)不对称但重复的大小块 (3, 2)
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
chunks=(1, 6)不对称但重复的大小块 (1, 6)
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
chunks=((2, 4), (3, 3))不对称和非重复的块
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
chunks=((2, 2, 1, 1), (3, 2, 1))不对称和非重复的块
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 0 1 2 3 4
5 6 7 8 9 0
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
用户很少在原始数据上提供后面的例子,但是由复杂的切片和广播操作引起.一般来说,我使用最简单的形式,直到我需要更复杂的形式.块的选择应与您想要的计算一致.
例如,如果您计划沿第一个维度取出薄片,那么您可能希望使该维度比其他维度更瘦.如果您打算进行线性代数,那么您可能需要更多对称块.