Insert several nan values after every element of an array in python

Viewed 285

I am trying to do something very simple, but I am stuck. Some help would be very nice. I have this:

x=([0.,1.,2.,3.,4.])

and I want to obtain this:

x1=([0.,nan,nan,nan,nan,nan,1.,nan,,nan,nan,nan,nan,2.,nan,nan,nan,nan,nan,3.,nan,nan,nan,nan,nan,4.,nan,nan,nan,nan,nan])

5 nan values after every element of this array. My attempt so far:

x = np.arange(0,5, dtype=float)
x1= np.insert(x,[i+1 for i in x], np.nan)

but I can only obtain this:

array([ 0., nan,  1., nan,  2., nan,  3., nan,  4., nan])

And trying to do it again I got a bound error. Any suggestion?

Thanks a lot

2 Answers

I would create a full nan array and insert the x values with slice:

y = np.full(len(x)*6, np.nan)
y[::6] = x

Output (y):

array([ 0., nan, nan, nan, nan, nan,  1., nan, nan, nan, nan, nan,  2.,
       nan, nan, nan, nan, nan,  3., nan, nan, nan, nan, nan,  4., nan,
       nan, nan, nan, nan])

You can add lists using infix + and also sum (with a starting value of []). This means you can do it like this:

y = sum([[a] + [nan] * 5 for a in x],[])
Related