2016-11-27 6 views
1

У меня есть двумерный массив numpy, и мне нужно добавить один столбец перед первым столбцом в качестве id.Вставка столбца в определенном месте в 2D-массив в numpy?

Мой массив это:

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

Столбец, что я хочу, чтобы добавить этот y = ['1' '2' '3' '4' '5']

И цель выход:

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

Есть ли способ, что я могу сделай это? (Я могу найти решение для вставки строки, но не столбец)

ответ

5

определить свой новый столбец:

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

и вставить его в начале:

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

для вставки в любой Данное положение i, вы можете сделать это следующим образом:

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

Но он смотрит на меня, как с помощью вместо этого будет использоваться размерная матрица pandas, а не массив numpy ...

+0

Кроме того, '' 'np.concatenate ((col, x), axis = 1)' '' – wwii

+0

Спасибо @julien Bernu! Это работает! –