Insert element into numpy array

Lists have a very simple method to insert elements:

a = [1,2,3,4] a.insert(2,66) print a [1, 2, 66, 3, 4] 

For a numpy array I could do:

a = np.asarray([1,2,3,4]) a_l = a.tolist() a_l.insert(2,66) a = np.asarray(a_l) print a [1 2 66 3 4] 

but this is very convoluted.

Is there an insert equivalent for numpy arrays?

3 Answers

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]) 
2

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 
6

To add elements to a numpy array you can use the method 'append' passing it the array and the element that you want to add. For example:

import numpy as np dummy = [] dummy = np.append(dummy,12)

this will create an empty array and add the number '12' to it

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like