python, numpy; How to insert element at the start of an array python, numpy; How to insert element at the start of an array arrays arrays

python, numpy; How to insert element at the start of an array


Simplest way:

a = np.array([1 + 2j, 5 + 7j])a = np.insert(a, 0, 0)

Then:

>>> aarray([ 0.+0.j,  1.+2.j,  5.+7.j])

Note that this creates a new array, it does not actually insert the 0 into the original array.

There are several alternatives to np.insert, all of which also create a new array:

In [377]: aOut[377]: array([ 1.+2.j,  5.+7.j])In [378]: np.r_[0, a]Out[378]: array([ 0.+0.j,  1.+2.j,  5.+7.j])In [379]: np.append(0, a)Out[379]: array([ 0.+0.j,  1.+2.j,  5.+7.j])In [380]: np.concatenate([[0], a])Out[380]: array([ 0.+0.j,  1.+2.j,  5.+7.j])In [381]: np.hstack([0, a])Out[381]: array([ 0.+0.j,  1.+2.j,  5.+7.j])In [382]: np.insert(a, 0, 0)Out[382]: array([ 0.+0.j,  1.+2.j,  5.+7.j])


An alternative is "horizontal stack" (also creates a new array):

np.hstack((0,a))


Also, if you have an n-dimensional array, you need to specify the axis as well, otherwise it gets flattened out:

 np.insert(my_array, 0, myvalue, axis=1)