NumPy-在指定索引后插入零数组

时间:2018-11-08 13:01:13

标签: python arrays numpy

我的代码是:

('would', None)
('research', u'noun')
('part', u'noun')
('technologies', u'noun')
('size', u'noun')
('articles', u'noun')
('analyzes', u'verb')
('line', u'noun')

我想要的输出是:

x=np.linspace(1,5,5)

a=np.insert(x,np.arange(1,5,1),np.zeros(3))

我得到的错误是:

  

ValueError:形状不匹配:形状(3,)的值数组不能为   广播到形状(4,)的索引结果

当我这样做时:

[1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5]

结果是:

x=np.linspace(1,5,5)

a=np.insert(x,np.arange(1,5,1),0)

为什么当我尝试插入数组时它不起作用?

P.S。我不能使用循环

2 个答案:

答案 0 :(得分:3)

您可以使用np.repeat来重复输入索引。对于一维数组,np.insertobj参数引用各个索引。

x = np.linspace(1, 5, 5)

a = np.insert(x, np.repeat(np.arange(1, 5, 1), 3), 0)

array([ 1.,  0.,  0.,  0.,  2.,  0.,  0.,  0.,  3.,  0.,  0.,  0.,  4.,
        0.,  0.,  0.,  5.])

答案 1 :(得分:2)

另一个选择:

np.hstack((x[:,None], np.zeros((5,3)))).flatten()[:-3]

给予:

array([ 1.,  0.,  0.,  0.,  2.,  0.,  0.,  0.,  3.,  0.,  0.,  0.,  4.,
    0.,  0.,  0.,  5.])

也就是说,假装x是列向量,并在其右侧堆叠5x3的零块,然后展平。