2016-11-27 1 views
1

J'ai un tableau numpy 2D et j'ai besoin d'ajouter une colonne avant la première colonne en tant qu'identificateur.Insertion d'une colonne à un emplacement spécifique dans un tableau 2D en numpy?

Mon tableau est le suivant:

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']] 

La colonne que je veux ajouter est ce y = ['1' '2' '3' '4' '5']

Et la sortie cible est:

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']] 

Est-il possible que je peux fais le? (Je peux trouver une solution pour insérer une ligne, mais pas une colonne)

Répondre

5

définir votre nouvelle colonne:

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

et l'insérer au début:

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

pour insérer à tout position donnée i, vous pouvez le faire comme ceci:

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

Mais il me semble que l'aide d'un pandas dataframe plutôt qu'un tableau numpy serait une meilleure option ...

+0

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

+0

Merci @julien Bernu! Ça fonctionne! –