2017-02-04 9 views
1

x Say ist ein 3x3 numpy-Array, das die folgenden enthält:numpy Indexierung auf mehrdimensionale-Array

import numpy as np 
x = np.array([[ 1., 2., 3.], 
       [ 4., 5., 6.], 
       [ 7., 8., 9.]]) 

gibt es eine Indizierung, die mir die folgenden Sub-Array geben kann:

array([[ 1., 2.], 
     [ 5., 6.]]) 
+1

Sie alles versucht haben? – Sid

+0

Ja Dinge wie 'x [(0,2), 0: 2]' aber vergebens. Ich konnte keine Subsets wie das von mir erwähnte erhalten. –

Antwort

4

Sie können integer array indexing mit einem Tupel von Arrays verwenden:

>>> rows = np.array([[0, 0], 
...     [1, 1]], dtype=np.intp) 
>>> columns = np.array([[0, 1], 
...      [1, 2]], dtype=np.intp) 
>>> x[rows, columns] 
array([[ 1., 2.], 
     [ 5., 6.]]) 
+0

Danke, eigentlich basierend auf deinem Vorschlag scheint das Folgende auch zu funktionieren (Ich suche einen Einzeiler): 'x [[[0, 0], [1, 1]], [[0, 1] , [1, 2]]] ' –

+0

okay, ich wusste nicht, dass du nach einem kurzen Code suchst, also entschied ich mich dafür, den expliziten zu zeigen. Es ist ein bisschen klarer, was die Zeilen darstellen und was die Spalten sind. :) – MSeifert

-3

können Sie verwenden

x[:2,:2] 

Ihr Problem zu lösen

+1

Es funktioniert nicht. – MaLiN2223