If you just want to insert elements into subsequent indexes, as a more optimized way, you can use np.concatenate() to combine the fragments of the array with your intended elements:
For example, in this case you can:
In [21]: np.concatenate((a[:2], [66], a[2:])) Out[21]: array([ 1, 2, 66, 3, 4])
Test (5 times 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 the standard with large arrays (another 5 times 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
source share