Вставить одну матрицу в другую

Первая матрица - это пустое изображение

blank_img=np.zeros(shape=[int(new_x), int(new_y)])
print(blank_img.shape)
(2074, 1570)

Вторая матрица -это одноканальное изображение

im_first= cv2.imread('1.tif',cv2.IMREAD_GRAYSCALE)
(1280, 960)

Как поместить вторую матрицу в первую? Т.е. первое изображение - это подложка для остальных изображений Для примера

A=[[0, 0, 0, 0, 0, 0]
  [0, 0, 0, 0, 0, 0]
  [0, 0, 0, 0, 0, 0]
  [0, 0, 0, 0, 0, 0]
  [0, 0, 0, 0, 0, 0]]

B=[[2, 3, 4]
  [5, 6, 7]
  [8, 9, 3]]

Желаемый результат

[[0, 0, 0, 0, 0, 0]
 [0, 0, 2, 3, 4, 0]
 [0, 0, 5, 6, 7, 0]
 [0, 0, 8, 9, 3, 0]
 [0, 0, 0, 0, 0, 0]]

Ответы (2 шт):

Автор решения: CrazyElf

Можно сделать через срезы, используя ваш пример:

import numpy as np

A=np.array([[0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0]])

B=np.array([[2, 3, 4],
  [5, 6, 7],
  [8, 9, 3]])

A[1:4,2:5] = B # со строки с индексом 1 (нумерация с 0) и с колонки 2 и до указанных строки и колонки
A

Вывод:

array([[0, 0, 0, 0, 0, 0],
       [0, 0, 2, 3, 4, 0],
       [0, 0, 5, 6, 7, 0],
       [0, 0, 8, 9, 3, 0],
       [0, 0, 0, 0, 0, 0]])
→ Ссылка
Автор решения: Владислав Харламов
import numpy as np
>>> A = np.ones((3,3)) # Создаем просто матрицу из единиц
>>> np.pad(A, (1,2))  # Добавляем обрамление нулями по выбранным измерениям.
>>> array([[0., 0., 0., 0., 0., 0.],
          [0., 1., 1., 1., 0., 0.],
          [0., 1., 1., 1., 0., 0.],
          [0., 1., 1., 1., 0., 0.],
          [0., 0., 0., 0., 0., 0.],
          [0., 0., 0., 0., 0., 0.]])
→ Ссылка