2016-08-08 20 views
2

In Python habe ich ein großes 2D-Array mit Daten und ein weiteres Mx2-2D-Array mit einer Sammlung von M 2D-Koordinaten von Interesse, z.Extract-Sub-Array aus der Sammlung von 2D-Koordinaten?

Ich möchte das Mx1-Array mit den Werten des Datenarrays an diesen Koordinaten (Indizes) Standorten extrahieren. Offensichtlich funktioniert data[coords] nicht.

Ich vermute, es gibt eine einfache Möglichkeit, das zu tun, aber stackoverflow hat mich bis jetzt gescheitert. Vielen Dank im Voraus für Ihre Hilfe.

EDIT: Ein Beispiel wäre

data=[[0, 0, 0, 0, 0, 0, 1, 0], 
     [0, 0, 0, 1, 2, 1, 0, 0], 
     [0, 0, 0, 1, 23, 40, 0, 0], 
     [0, 0, 0, 1, 1, 2, 0, 0], 
     [0, 0, 3, 2, 0, 0, 0, 0], 
     [0, 0, 4, 5, 6, 2, 1, 0], 
     [0, 0, 0, 0, 1, 20, 0, 0], 
     [0, 0, 0, 3, 1, 2, 0, 0], 
     [0, 0, 0, 0, 0, 0, 0, 0]] 

coords=[[1,4],[2,4],[2,5],[5,3],[6,5]] 

und die gewünschte Ausgabe ein list comprehension verwenden wäre sein

out=[2,23,40,5,20] 
+0

Können Sie bitte ein Beispiel dafür angeben, wie Daten aussehen? Bitte fügen Sie auch Ihre gewünschte Ausgabe hinzu. – Abdou

+0

Nun, meine Daten sind 1024x1024 Arrays oder ganze Zahlen, daher glaube ich nicht, dass es sinnvoll wäre, sie oben hinzuzufügen. Ich werde jedoch ein Mock-Beispiel mit der gewünschten Ausgabe hinzufügen. – Virginie

+0

Nur eine Probe wäre in Ordnung. – Abdou

Antwort

2

Sie könnten:

In [73]: [data[i][j] for i,j in coords] 
Out[73]: [2, 23, 40, 5, 20] 

Das Ergebnis durch die Liste Verständnis zurück entspricht

result = [] 
for i,j in coords: 
    result.append(data[i][j]) 
+0

Das habe ich gebraucht, danke! – Virginie