2015-09-19 3 views
2

У меня есть тестовая матрица (z) формы 40x40, заполненная нулями.Добавить подматрицы в определенных местах

Мне нужно добавить в тестовую матрицу 4 подматрицы форм, называемых c1, c2 (5x5), c3 (7x7) и c4 (9x9).

Я хочу разместить центры подматриц в соответствующих местах, а затем просто выполнить добавление элементов. Месторасположения в тестовой матрице: z (9,9), z (9,29), z (29,9), z (29,29).

Я пробовал смотреть на эти темы, но я не могу получить четкий ответ о том, как решить мою проблему. How to add different arrays from the center point of an array in Python/NumPy Adding different sized/shaped displaced NumPy matrices

примеры кода я попытался:

def zero_matrix(d): 
    matrix = np.zeros((d,d), dtype=np.float) 
    return matrix 

z = zero_matrix(40) 

c1 = np.genfromtxt('xxxxxx', dtype=None, delimiter = '\t') 
c2 = np.genfromtxt('xxxxxx', dtype=None, delimiter = '\t') 
c3 = np.genfromtxt('xxxxxx', dtype=None, delimiter = '\t') 
c4 = np.genfromtxt('xxxxxx', dtype=None, delimiter = '\t') 


def adding(z): 
    for i in range(z.shape[0]): 
     for j in range(z.shape[1]): 
      if i == 9 and j==9: 
       c1mid = c1.shape[0]//2 
       z[i,j] = c1[c1mid,c1mid] 
    print z 
    return z 

Но это только добавляет центры, а не весь подматрицы.

Он должен выглядеть следующим образом: Test matrix design

ответ

1

Хорошей вещи о нарезке массива в NumPy это вам не нужна для петель, которые вы используете. Кроме того, причина того, что он только положить центральный элемент, потому что вы только положить один элемент там (c1 [c1mid, c1mid] является единственным числом) вот что вы можете сделать:

z[7:12,7:12] = c1 
    z[7:12,27:32] = c2 
    z[26:33,6:14] = c3 
    z[25:34,25:33] = c4 
+0

Он работал. Большое спасибо! :) – Litwos

Смежные вопросы