Canuck - 8 months ago 71

Python Question

I wonder if there is a trick to extending a numpy array with consecutive

numbers in between each original values, up to a user controlled default length. Perhaps there is already a built-in function that turns x into y

`x=np.array([4,8,4,10])`

y=np.array([4,5,6,7,8,9,10,11,4,5,6,7,10,11,12,13])

Here the length between each element that I added was three. Speed is of the essence here. I need something like this for my column data to work in creating a sparse

matrix.

Also, if I have an array such as

`s=np.array([0,1])`

is there a quick way to extend each element an arbitrary amount of

times, lets say 4 for example:

`s=np.array([0,0,0,0,1,1,1,1])`

Answer

Broadcasted addition is probably the fastest

```
In [241]: (x[:,None]+np.arange(4)).ravel()
Out[241]: array([ 4, 5, 6, 7, 8, 9, 10, 11, 4, 5, 6, 7, 10, 11, 12, 13])
```

It gets trickier if adding different amounts for each sublist.

`repeat`

is useful:

```
In [242]: np.repeat(np.array([0,1]),[3,4])
Out[242]: array([0, 0, 0, 1, 1, 1, 1])
```

`tile`

is another good tool.

Source (Stackoverflow)