Mam większą tablicę 2D i chciałbym dodać mniejszą tablicę 2D.

from numpy import *
x = range(25)
x = reshape(x,(5,5))
print x
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
y = [66,66,66,66]
y = reshape(y,(2,2))
print y
[[66 66]
 [66 66]]

Chciałbym dodać wartości z tablicy y do x zaczynając od 1,1 tak, że x wygląda tak:

[[ 0  1  2  3  4]
 [ 5 72 73  8  9]
 [10 77 78 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]

Czy to możliwe z krojeniem? Czy ktoś może zasugerować poprawne formatowanie oświadczenia z plasterkiem, aby to osiągnąć?

Dzięki

4
the dood 23 listopad 2013, 04:39

2 odpowiedzi

Najlepsza odpowiedź

Tak, możesz użyć krojenia na macierzy:

In [20]: x[1:3,1:3] += y

In [21]: print x
[[ 0  1  2  3  4]
 [ 5 72 73  8  9]
 [10 77 78 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]]
6
ArtemB 23 listopad 2013, 00:46
x[1:3, 1:3] += y

Dodaj y w miejscu na kawałek x, który chcesz zmodyfikować. Należy pamiętać, że liczba indeksowania liczy od 0, nie 1. Zauważ również, że dla tego konkretnego wyboru Y,

x[1:3, 1:3] += 66

Osiągnie ten sam efekt w prostszy sposób.

6
user2357112 supports Monica 23 listopad 2013, 00:45