使用shift和clip将数据插入numpy数组

时间:2017-03-12 12:06:35

标签: python arrays numpy

我有一个numpy数组:

x = np.zeros(5)
[0,0,0,0,0]

x.put(5)
[0,0,0,0,5]

x.put([1,2,3])
[0,5,1,2,3]

x.put([5,10,10])
[2,3,5,10,10]

我想要如上例所示。我只是把信息放在最后。并且数据移位并剪掉溢出。

1 个答案:

答案 0 :(得分:1)

您可以将数组的尾部复制到初始部分。请注意,此方法为O(n),因此如果数组x非常长,则不适合。

def push(x, y):
    push_len = len(y)
    assert len(x) >= push_len
    x[:-push_len] = x[push_len:]
    x[-push_len:] = y
    return x
>>> x = numpy.zeros(5)
>>> x
array([ 0.,  0.,  0.,  0.,  0.])
>>> push(x, [5])
array([ 0.,  0.,  0.,  0.,  5.])
>>> push(x, [1,2,3])
array([ 0.,  5.,  1.,  2.,  3.])
>>> push(x, [5,10,10])
array([  2.,   3.,   5.,  10.,  10.])