Duncan Tait - 2 years ago 171
Python Question

# numpy: extending arrays along a new axis?

Surely there must be a way to do this... I can't work it out.

I have a (9,4) array, and I want to repeat it along a 3rd axis 4096 times... So it becomes simply (9,4,4096), with each value from the 9,4 array simply repeated 4096 times down the new axis.

If my dubious 3D diagram makes sense (the diagonal is a z-axis)

``````4|   /off to 4096
3|  /
2| /
1|/_ _ _ _ _ _ _ _ _
1 2 3 4 5 6 7 8 9
``````

Cheers

EDIT: Just to clarify, the emphasis here is on the (9,4) array being REPEATED for each of the 4096 'rows' of the new axis. Imagine a cross-section - each original (9,4) array is one of those down the 4096 long cuboid.

Here is one way:

``````import scipy
X = scipy.rand(9,4,1)
Y = X.repeat(4096,2)
``````

If `X` is given to you as only (9,4), then

``````import scipy
X = scipy.rand(9,4)
Y = X.reshape(9,4,1).repeat(4096,2)
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download