本文簡要介紹 python 語言中 numpy.block 的用法。
用法:
numpy.block(arrays)從嵌套的塊列表中組裝 nd-array。
最內層列表中的塊沿著最後一個維度 (-1) 連接(參見
concatenate),然後這些塊沿著 second-last 維度 (-2) 連接,依此類推,直到到達最外層列表。塊可以是任何維度,但不會使用正常規則進行廣播。相反,插入大小為 1 的引導軸,以使所有塊的
block.ndim相同。這主要用於處理標量,這意味著像np.block([v, 1])這樣的代碼是有效的,其中v.ndim == 1。當嵌套列表有兩層深度時,這允許從它們的組件構造塊矩陣。
- arrays: 數組 或標量的嵌套列表(但不是元組)
如果傳遞單個 ndarray 或標量(深度為 0 的嵌套列表),則返回未修改(且未複製)。
元素形狀必須沿適當的軸匹配(不廣播),但前導 1 將根據需要添加到形狀之前以使尺寸匹配。
- block_array: ndarray
從給定塊組裝的數組。
輸出的維數等於以下各項中的最大值: * 所有輸入的維數 * 輸入列表嵌套的深度
- ValueError
如果列表深度不匹配 - 例如,
[[a, b], c]是非法的,應拚寫為[[a, b], [c]]如果列表為空 - 例如,
[[a, b], []]
參數:
返回:
拋出:
注意:
當僅使用標量調用時,
np.block等效於 ndarray 調用。所以np.block([[1, 2], [3, 4]])等價於np.array([[1, 2], [3, 4]])。此函數不強製塊位於固定網格上。
np.block([[a, b], [c, d]])不限於以下形式的數組:AAAbb AAAbb cccDD但也允許生產,對於一些
a, b, c, d:AAAbb AAAbb cDDDD由於連接首先發生在最後一個軸上,
block_not_ 能夠直接產生以下內容:AAAbb cccbb cccDDMatlab 的“square bracket stacking”,
[A, B, ...; p, q, ...],等價於np.block([[A, B, ...], [p, q, ...]])。例子:
該函數最常見的用途是構建塊矩陣
>>> A = np.eye(2) * 2 >>> B = np.eye(3) * 3 >>> np.block([ ... [A, np.zeros((2, 3))], ... [np.ones((3, 2)), B ] ... ]) array([[2., 0., 0., 0., 0.], [0., 2., 0., 0., 0.], [1., 1., 3., 0., 0.], [1., 1., 0., 3., 0.], [1., 1., 0., 0., 3.]])對於深度為 1 的列表,
block可以用作hstack>>> np.block([1, 2, 3]) # hstack([1, 2, 3]) array([1, 2, 3])>>> a = np.array([1, 2, 3]) >>> b = np.array([4, 5, 6]) >>> np.block([a, b, 10]) # hstack([a, b, 10]) array([ 1, 2, 3, 4, 5, 6, 10])>>> A = np.ones((2, 2), int) >>> B = 2 * A >>> np.block([A, B]) # hstack([A, B]) array([[1, 1, 2, 2], [1, 1, 2, 2]])對於深度為 2 的列表,可以使用
block代替vstack:>>> a = np.array([1, 2, 3]) >>> b = np.array([4, 5, 6]) >>> np.block([[a], [b]]) # vstack([a, b]) array([[1, 2, 3], [4, 5, 6]])>>> A = np.ones((2, 2), int) >>> B = 2 * A >>> np.block([[A], [B]]) # vstack([A, B]) array([[1, 1], [1, 1], [2, 2], [2, 2]])它也可以用在
atleast_1d和atleast_2d的地方>>> a = np.array(0) >>> b = np.array([1]) >>> np.block([a]) # atleast_1d(a) array([0]) >>> np.block([b]) # atleast_1d(b) array([1])>>> np.block([[a]]) # atleast_2d(a) array([[0]]) >>> np.block([[b]]) # atleast_2d(b) array([[1]])
相關用法
- Python numpy blackman用法及代碼示例
- Python numpy broadcast用法及代碼示例
- Python numpy byte_bounds用法及代碼示例
- Python numpy broadcast.nd用法及代碼示例
- Python numpy busday_offset用法及代碼示例
- Python numpy base_repr用法及代碼示例
- Python numpy bartlett用法及代碼示例
- Python numpy broadcast.size用法及代碼示例
- Python numpy broadcast.reset用法及代碼示例
- Python numpy broadcast_shapes用法及代碼示例
- Python numpy busdaycalendar用法及代碼示例
- Python numpy bitwise_xor用法及代碼示例
- Python numpy binary_repr用法及代碼示例
- Python numpy bitwise_and用法及代碼示例
- Python numpy broadcast.numiter用法及代碼示例
- Python numpy busday_count用法及代碼示例
- Python numpy broadcast.iters用法及代碼示例
- Python numpy broadcast_to用法及代碼示例
- Python numpy broadcast_arrays用法及代碼示例
- Python numpy broadcast.ndim用法及代碼示例
- Python numpy bmat用法及代碼示例
- Python numpy bincount用法及代碼示例
- Python numpy broadcast.index用法及代碼示例
- Python numpy bitwise_or用法及代碼示例
- Python numpy RandomState.standard_exponential用法及代碼示例
注:本文由純淨天空篩選整理自numpy.org大神的英文原創作品 numpy.block。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
