2016-11-27 3 views
1

Ich habe ein 2D-Nummernfeld und ich muss eine Spalte vor der ersten Spalte als ID hinzufügen.Einfügen einer Spalte an einer bestimmten Stelle im 2D-Array in numpy?

Mein Array ist dies:

x = [['8' '4' 'M' '55' '7' 'S' '7' '2'] 
['36' '4' 'F' '58' '1' 'M' '7' '7'] 
['33' '3' 'M' '34' '4' 'M' '2' '3'] 
['43' '1' 'F' '64' '4' 'M' '7' '68'] 
['1' '2' 'M' '87' '4' 'M' '7' '1']] 

Die Spalte, die ich hinzufügen möchte, ist dies y = ['1' '2' '3' '4' '5']

Und das Ziel ausgegeben:

z = [['1' '8' '4' 'M' '55' '7' 'S' '7' '2'] 
['2' '36' '4' 'F' '58' '1' 'M' '7' '7'] 
['3' '33' '3' 'M' '34' '4' 'M' '2' '3'] 
['4' '43' '1' 'F' '64' '4' 'M' '7' '68'] 
['5' '1' '2' 'M' '87' '4' 'M' '7' '1']] 

Gibt es eine Möglichkeit, dass ich TU es? (Ich kann eine Lösung für das Einfügen einer Zeile finden, aber keine Spalte)

Antwort

5

definieren Sie Ihre neue Spalte:

col = np.array(['1','2','3','4','5']) 
col.shape = (5,1) 

und fügen Sie ihn am Anfang:

target = np.hstack((col, x)) 

zum Einfügen auf jeder gegebene Position i, können Sie es wie folgt tun:

target = np.hstack((x[:,:i], col, x[:,i:])) 

Aber es scheint mir, wie ein mit pandas dateframe anstatt ein numpy-array wäre eine bessere option ...

+0

Auch '' 'np.concatenate ((col, x), axis = 1)' '' – wwii

+0

Danke @julien Bernu! Es funktioniert! –

Verwandte Themen