Meghan - 2 months ago 5
Python Question

# How to add a dimension to a numpy array in Python

I have an array that is size (214, 144). I need it to be (214,144,1) is there a way to do this easily in Python? Basically the dimensions are supposed to be (Days, Times, Stations). Since I only have 1 station's data that dimension would be a 1. However if I could also make the code flexible enough work for say 2 stations that would be great (e.g. changing the dimension size from (428,288) to (214,144,2)) that would be great!

You could use `reshape`:

``````>>> a = numpy.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])
>>> a.shape
(2, 6)
>>> a.reshape((2, 6, 1))
array([[[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6]],

[[ 7],
[ 8],
[ 9],
[10],
[11],
[12]]])
>>> _.shape
(2, 6, 1)
``````

Besides changing the shape from `(x, y)` to `(x, y, 1)`, you could use `(x, y/n, n)` as well, but you may want to specify the column order depending on the input:

``````>>> a.reshape((2, 3, 2))
array([[[ 1,  2],
[ 3,  4],
[ 5,  6]],

[[ 7,  8],
[ 9, 10],
[11, 12]]])
>>> a.reshape((2, 3, 2), order='F')
array([[[ 1,  4],
[ 2,  5],
[ 3,  6]],

[[ 7, 10],
[ 8, 11],
[ 9, 12]]])
``````