Insert element into numpy array
You can use numpy.insert
, though unlike list.insert
it returns a new array because arrays in NumPy have fixed size.
>>> import numpy as np
>>> a = np.asarray([1,2,3,4])
>>> np.insert(a, 2, 66)
array([ 1, 2, 66, 3, 4])
If you just want to insert items in consequent indices, as a more optimized way you can use np.concatenate()
to concatenate slices of the array with your intended items:
For example in this case you can do:
In [21]: np.concatenate((a[:2], [66], a[2:]))
Out[21]: array([ 1, 2, 66, 3, 4])
Benchmark (5 time faster than insert
):
In [19]: %timeit np.concatenate((a[:2], [66], a[2:]))
1000000 loops, best of 3: 1.43 us per loop
In [20]: %timeit np.insert(a, 2, 66)
100000 loops, best of 3: 6.86 us per loop
And here is a benchmark with larger arrays (still 5 time faster):
In [22]: a = np.arange(1000)
In [23]: %timeit np.concatenate((a[:300], [66], a[300:]))
1000000 loops, best of 3: 1.73 us per loop
In [24]: %timeit np.insert(a, 300, 66)
100000 loops, best of 3: 7.72 us per loop