2017-04-21 2 views
1

J'ai un problème avec des matrices qui se chevauchentMatrice Python chevauchement

import numpy as np 
import pprint 

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

for i in range(0,2): 
    for j in range(0,2): 
     if i==0: 
      if j<2: 
       B[i,j]=A[i,j] 
     elif i==2: 
      if j==2: 
       B[i,j]=A[i,j] 
     else: 
      B[i,j] = A[i,j] + A[i-1,j-1] 

pprint.pprint(B) 

et retourne un tableau comme celui-ci ([[1,0,0],[0,2,0],[0,0,0]]) mais je veux ([[1,0,0],[0,2,0],[0,0,1]])

ce qui ne va pas avec mon code?

aidez s'il vous plaît.

Répondre

0

Vous pouvez le faire sans des boucles:

B[:2, :2] += A 
B[1:3, 1:3] += A 
print(B) 
# array([[1, 0, 0], 
#  [0, 2, 0], 
#  [0, 0, 1]]) 
+0

Merci, hmm une question. Alors si j'ai 6x6 array et que je veux faire 9x9 alors B [: 5,: 5] + = A, B [3: 8, 3: 8] + = A ce genre de code a raison? – Mark

+0

Dépend de la région qui se chevauche, mais oui par exemple –

+0

Merci d'avoir répondu ~ :) – Mark