Функция block
Функция block собирает новый массив из переданных блоков,
располагая их согласно структуре вложенных списков.
Первый параметр - вложенный список блоков, которые могут
быть массивами, списками или числами. Если блоки имеют
разные размеры, функция автоматически выравнивает их,
где это возможно, по правилам broadcasting.
Важно, чтобы блоки были согласованы по размерам для
формирования прямоугольной результирующей структуры.
Синтаксис
np.block(blocks)
Пример
Создадим простую блочную матрицу из двух горизонтальных блоков:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
res = np.block([[a, b]])
print(res)
Результат выполнения кода:
[[1 2 5 6]
[3 4 7 8]]
Пример
Создадим блочную матрицу с вертикальным объединением:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
res = np.block([[a], [b]])
print(res)
Результат выполнения кода:
[[1 2]
[3 4]
[5 6]
[7 8]]
Пример
Создадим сложную блочную структуру из четырех блоков в форме сетки 2x2:
import numpy as np
a = np.array([[1, 1], [1, 1]])
b = np.array([[2, 2], [2, 2]])
c = np.array([[3, 3], [3, 3]])
d = np.array([[4, 4], [4, 4]])
res = np.block([[a, b], [c, d]])
print(res)
Результат выполнения кода:
[[1 1 2 2]
[1 1 2 2]
[3 3 4 4]
[3 3 4 4]]
Пример
Функция может объединять блоки разных размеров, если это позволяет broadcasting:
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7], [8]])
c = np.array([9, 10, 11])
res = np.block([[a, b], [c, 12]])
print(res)
Результат выполнения кода:
[[ 1 2 3 7]
[ 4 5 6 8]
[ 9 10 11 12]]
Смотрите также
-
функцию
concatenate,
которая объединяет массивы вдоль существующей оси -
функцию
stack,
которая объединяет массивы вдоль новой оси -
функцию
vstack,
которая объединяет массивы вертикально (по строкам) -
функцию
hstack,
которая объединяет массивы горизонтально (по столбцам)