dask.array.block
dask.array.block¶
- dask.array.block(arrays, allow_unknown_chunksizes=False)[源代码]¶
从嵌套的块列表中组装一个nd数组。
在最内层列表中的块沿着最后一个维度(-1)连接,然后这些块沿着倒数第二个维度(-2)连接,依此类推,直到最外层列表为止。
块可以是任意维度,但不会按照常规规则进行广播。相反,会在前面插入大小为1的轴,以使
block.ndim
对所有块都相同。这主要对处理标量有用,意味着像block([v, 1])
这样的代码是有效的,其中v.ndim == 1
。当嵌套列表达到两层深度时,这允许从其组成部分构建块矩阵。
- 参数
- 数组嵌套的类数组或标量列表(但不包括元组)
如果传递的是单个 ndarray 或标量(深度为 0 的嵌套列表),则返回未修改的(且未复制)。
元素形状必须在适当的轴上匹配(不进行广播),但必要时会在形状前添加前导1以使维度匹配。
- allow_unknown_chunksizes: bool
允许未知的块大小,例如从dask数据帧转换而来。Dask.array无法验证块是否对齐。如果数据来自不同对齐的源,则可能会导致意外结果。
- 返回
- block_arrayndarray
由给定块组装而成的数组。
输出的维度等于以下最大值:* 所有输入的维度 * 输入列表嵌套的深度
- Raises
- ValueError
如果列表深度不匹配 - 例如,
[[a, b], c]
是非法的,应该写成[[a, b], [c]]
如果列表为空 - 例如,
[[a, b], []]
参见
concatenate
将一系列数组连接在一起。
stack
在新维度上按顺序堆叠数组。
hstack
按顺序水平堆叠数组(按列)。
vstack
按顺序垂直堆叠数组(按行)。
dstack
沿第三维度按顺序堆叠数组(深度方向)。
vsplit
将数组垂直分割成多个子数组的列表。
注释
当仅使用标量调用时,
block
等同于 ndarray 调用。因此block([[1, 2], [3, 4]])
等同于array([[1, 2], [3, 4]])
。此函数不强制块位于固定网格上。
block([[a, b], [c, d]])
不受限于以下形式的数组:AAAbb AAAbb cccDD
但对于某些
a, b, c, d
,也允许生成:AAAbb AAAbb cDDDD
由于拼接首先沿最后一个轴进行,block _不能_ 直接产生以下内容:
AAAbb cccbb cccDD
Matlab 的 “方括号堆叠”,
[A, B, ...; p, q, ...]
,等同于block([[A, B, ...], [p, q, ...]])
。