2017-09-05 3 views
1

Ich möchte auf eine bestimmte Zeilen- und Spaltenbeschränkung eines 2d-numpy-Arrays zugreifen.Einem Gitter eines NumPy-Arrays gegebene Zeilen- und Spaltenindizes zuweisen

> x 
array([[1, 2, 0], 
     [3, 4, 0], 
     [0, 0, 1]]) 

Wenn ich tue, was natürlich scheint, bekomme ich nur die diagonalen Elemente des eingeschränkten Arrays.

> x[[0,1], [0,1]] 
array([1, 4]) 

Stattdessen kann ich dies tun, um zu lesen, was ich will -

> x[[0,1],:][:,[0,1]] 
array([[1, 2], 
     [3, 4]]) 

..aber es mich nicht lassen die Werte schreiben/zuordnen.

> x[[0,1],:][:,[0,1]] = np.array([[1,0],[0,1]]) 

> x 
array([[1, 2, 0], 
     [3, 4, 0], 
     [0, 0, 1]]) 

Wie kann ich hier in eine Matrix schreiben?

Antwort

2

Verwenden np.ix_ dass Raster von Elementen zuzuordnen und weisen -

x[np.ix_([0,1], [0,1])] = np.array([[1,0],[0,1]]) 
0

Dies funktioniert auch:

x[:2, :2] = np.array([[1, 0], [0, 1]]) 
Verwandte Themen