This article will discuss the various ways we can add and change dimensions to the NumPy array. A NumPy array consists of values of the same type. A tuple of positive integers or “index values” is used to access the elements. The number of dimensions is the rank of the array. A similar sequential data type in Python in Lists. A list in Python is resizeable and can contain elements of different types.

**NumPy arrays are effective in the following ways:**

- NumPy arrays take up lesser space
- They have better performance than Python lists
- NumPy arrays have optimized functionality (ex: Arithmetic Operations)

Let’s look at various methods to manipulate array dimensions.

## Add a Dimension to NumPy Array

### Using numpy.expand_dims()

The `numpy.expand_dims()`

function adds a new dimension to a NumPy array. It takes the array to be expanded and the new axis as arguments. It returns a new array with extra dimensions. We can specify the axis to be expanded in the `axis`

parameter.

### Example 1

```
import numpy as np
myArray = np.array([2,4,6])
print(myArray.shape)
myArray = np.expand_dims(myArray, axis = 0)
print(myArray.shape)
myArray = np.append(myArray, [[8,10,12]], axis=0)
print(myArray)
```

### Example 2

```
import numpy as np
myArray = np.array(["Python","Java","Cpp"])
print(myArray.shape)
myArray = np.expand_dims(myArray, axis = 0)
print(myArray.shape)
myArray = np.append(myArray, [["R","Go","Kotlin"]], axis=0)
print(myArray)
```

#### Outputs/Explanation

**Example 1**

(3,) (1, 3) [[ 2 4 6] [ 8 10 12]]

**Example 2**

(3,) (1, 3) [['Python' 'Java' 'Cpp'] ['R' 'Go' 'Kotlin']]

In the above code, we first created a 1D array `myArray`

with the `np.array()`

function and printed the shape of `myArray`

with the `array.shape`

property. We then converted the `array`

to a **2D array** with the `np.expand_dims(myArray, axis=0)`

function and printed the new shape. Finally, we appended the new elements into the array and printed it.

### Add a Dimension Using numpy.newaxis()

The `numpy.newaxis`

method can also be used to achieve the same. It has lesser code and complexity compared to the previous example.

### Example 1

```
import numpy as np
myArray = np.array([3,6,9])
print(myArray.shape)
myArray = myArray[np.newaxis]
print(myArray.shape)
myArray = np.append(myArray, [[12,15,18]], axis=0)
print(myArray)
```

### Example 2

```
import numpy as np
myArray = np.array(["Google","Microsoft","Apple"])
print(myArray.shape)
myArray = myArray[np.newaxis]
print(myArray.shape)
myArray = np.append(myArray, [["Riot","Ubisoft","Uber"]], axis=0)
print(myArray)
```

#### Outputs/Explanation

**Example 1**

(3,) (1, 3) [[ 3 6 9] [12 15 18]]

**Example 2**

(3,) (1, 3) [['Google' 'Microsoft' 'Apple'] ['Riot' 'Ubisoft' 'Uber']]

We converted the `array`

to a 2D array using `myArray[np.newaxis]`

method and printed the new shape of the `array`

with the `array.shape`

property. Finally, we appended new elements to the `array`

with the `np.append()`

function and printed the elements of the `array`

.

### Add Dimensions to an Image Array

It is possible to add dimensions to an image array as well. The default method is to use `.newaxis()`

```
import numpy as np
myImage = image[imagedata, np.newaxis]
```

Alternatively, we can use `.expand_dims()`

```
myImage = np.expand_dims("image.jpg", <required dimension>)
```

## Changing the Dimensions of NumPy Arrays

### Using .shape()

Using `.shape()`

we can change the dimensions (shape) of the NumPy array. This is the most straightforward method. Let’s take a look at the following program.

### Example 1

```
import numpy as np
myArray = np.array([1,3,5,7])
print(myArray)
print("initial shape of the array")
print(myArray.shape)
print("after changing the shape")
myArray.shape = (2,2)
print(myArray)
```

### Example 2

```
import numpy as np
myArray = np.array(["red","green","blue","violet"])
print(myArray)
print("initial shape of the array")
print(myArray.shape)
print("after changing the shape")
myArray.shape = (2,2)
print(myArray)
```

#### Outputs/Explanation

**Example 1**

[1 3 5 7] initial shape of the array (4,) after changing the shape [[1 3] [5 7]]

**Example 2**

['red' 'green' 'blue' 'violet'] initial shape of the array (4,) after changing the shape [['red' 'green'] ['blue' 'violet']]

Initially, we create an array `myArray`

of 4 elements. The initial **shape of the array** is (4,0). After passing `.shape() `

as (2,2), the shape of the array is changed accordingly.

### Using .reshape()

The reshape function takes a parameter `order`

. This allows us to reshape either row or column-wise.

### Example 1

```
import numpy as np
myArray = np.arange(1,10)
print(myArray)
print("converted into a 3x3: ")
print(np.reshape(myArray, (3,3)))
```

### Example 2

```
import numpy as np
myArray = np.arange(1,26)
print(myArray)
print("converted into a 5x5: ")
print(np.reshape(myArray, (5,5)))
```

#### Outputs/Explanation

**Example 1**

[1 2 3 4 5 6 7 8 9] converted into a 3x3: [[1 2 3] [4 5 6] [7 8 9]]

**Example 2**

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25] converted into a 5x5: [[ 1 2 3 4 5] [ 6 7 8 9 10] [11 12 13 14 15] [16 17 18 19 20] [21 22 23 24 25]]

Initially, we create an array `myArray`

of 9 elements using `arange`

. The shape of the array is changed using `.reshape()`

, which converts into a 3×3 array. The second example demonstrates the same, with a 5×5 array.

## How to Create a 2D Array in Python

Let’s see how we can create a 2D array in Python using `np.array()`

.

**Function Syntax** **for np.array()**

```
numpy.array
(
object,
dtype=None,
copy=True,
order='K',
subok=False,
ndim=0,
like=None
)
```

```
import numpy as np
myArray2D = np.array([[23,4],[20,20]])
print(myArray2D)
```

#### Output/Explanation

[[23 4] [20 20]]

In the above code first, we have imported a numpy library and then created a variable `myArray2D`

and assign a numpy array function for creating a 2D array.

## FAQs

**How do I add a Second or Third Dimension to the NumPy array?**

With the help of the `.expand_dims()`

function under the NumPy module, we can add multiple dimensions to your array. However, the values must be added separately

## Conclusion

In this article, we have discussed how we can add or change the dimensions of a NumPy array. We have also discussed how `.expand_dims()`

allows you to add multiple dimensions to an array.