2017-12-14 2 views
0

Ich habe zwei ArraysNumpy verschmelzenden Arrays

a = np.array[1,18,3,13,6,45,45] 
b= np.array [8,13,6,45,45] 

nachdem einige passende Übungen ich eine Liste, wie zum Beispiel:

[3,1,4] 

erste und zweite Nummer der Liste Null basiert. die dritte Nummer ist nicht. Die Liste steht für

  • Startposition des ersten Arrays

  • Startposition des zweiten Arrays

  • wie viele Zahlen Reihen

so für dieses Beispiel zum Abrufen der Ergebnis wäre

13, 13 
6,6 
45,45 
45,45 

Beide Startpunkte des Arrays und dann 4 Reihen danach.

Wie kann ich meine zwei Arrays mit meiner Matchliste zusammenführen?

EDIT Dies ist die Match, die ich benutze:

matchlist2 = [] 

matchlist2.append([3,1,4]) 
matchlist2.append([9,7,731]) 
matchlist2.append([766,762,19]) 
matchlist2.append([800,796,57]) 
matchlist2.append([867,862,88]) 
matchlist2.append([960,955,468]) 
matchlist2.append([1432,1427,65]) 
matchlist2.append([1523,1518,341]) 
matchlist2.append([1873,1868,32]) 
matchlist2.append([1923,1916,82]) 
matchlist2.append([2011,2004,699]) 
matchlist2.append([2716,2707,902]) 
matchlist2.append([3628,3617,247]) 
matchlist2.append([3923,391,378]) 
matchlist2.append([4306,4292,5]) 
+0

gegeben, 'l = [3,1,4]': 'a [l [0]: l [0] + l [2 ]], b [l [1]: l [1] + l [2]] '? – Divakar

+0

In welcher Datenstruktur müsste Ihr Ergebnis liegen? Ein 2-Spalten-Array? Oder benötigen Sie eine Tupelliste? –

+0

@Saravana Kumar, es müsste in einem 2-Spalten-Array sein, danke! – yanci

Antwort

1

ich es so etwas tun würde:

result = np.array([[[a[ind[0]],b[ind[1]]] for ind in zip(range(ml[0],ml[0]+ml[2]),range(ml[1],ml[1]+ml[2]))] for ml in matchlist2]) 

Edit: Divakar Lösung tatsächlich viel eleganter ist. Wenn Sie nur einen Reißverschluss machen, bekommen Sie, was Sie brauchen.

result = [list(zip(a[l[0]:l[0]+l[2]],b[l[1]:l[1]+l[2]])) for l in matchlist2] 
+0

Ich bekomme diesen Fehler: TypeError: Slice-Indizes müssen Ganzzahlen oder keine sein oder haben eine __index__ Methode. Ich kann nur etwas falsch machen, obwohl – yanci

+0

Nun können Sie sehen, wie Ihre Matchliste aussieht? Aus irgendeinem Grund denkt Python, dass die Elemente Ihrer Matchliste keine Ganzzahlen sind. –

+0

Ich habe die Matchliste, die ich verwende – yanci

0

IIUC das ist, was Sie brauchen:

a = np.array([1,18,3,13,6,45,45]) 
b = np.array([8,13,6,45,45]) 

look = [3,1,4] 
first, second, step = look 
c = np.array(zip(a[first:first+step],b[second:second+step])) 
c 
#[[13 13 
# [ 6 6 
# [45 45 
# [45 45]] 
+0

Ich benutze Spyder, und wenn ich bekomme 'Objekt-Arrays werden derzeit nicht unterstützt' – yanci