numpy вставка 1 столбца после каждого начиная со 2

Всем здравствуйте, изучая numpy, я нашел задание по вставке 1 столбца 2D-массива после каждого столбца начиная со 2 пытался сделать это срезами:

b = a[:,0]
a[:,::2] = b

не получилось, с помощью функции numpy insert так же не удается. Может кто подсказать?


Ответы (1 шт):

Автор решения: strawdog

Ну, например, можно сделать так:

При исходных:

mport numpy as np

a = np.array([0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5]).reshape(6,4)
b = np.array([66,66,66,66,66,66]).reshape(6,1)
a:
[[0 0 0 0]
 [1 1 1 1]
 [2 2 2 2]
 [3 3 3 3]
 [4 4 4 4]
 [5 5 5 5]]

b:
[[66]
 [66]
 [66]
 [66]
 [66]
 [66]]

делаем:

idx=list(range(2, a.shape[0]-1))
res = np.insert(a,idx,b, axis=1)

получаем res:

[[ 0  0 66  0 66  0 66]
 [ 1  1 66  1 66  1 66]
 [ 2  2 66  2 66  2 66]
 [ 3  3 66  3 66  3 66]
 [ 4  4 66  4 66  4 66]
 [ 5  5 66  5 66  5 66]]
→ Ссылка