# How to square every element in NumPy array?

There are three ways of calculating the square of each element in NumPy array:

## Square every element in NumPy array using numpy.square()

`np.square()` calculates the square of every element in NumPy array. It does not modify the original NumPy array and returns the element-wise square of the input array.

```import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
newarr = np.square(arr)
print('Original array:')
print(arr)
print('Squared array:')
print(newarr)```

Output

```Original array:
[[1 2 3 4]
[5 6 7 8]]
Squared array:
[[ 1  4  9 16]
[25 36 49 64]]```

## Square every element in 1D NumPy array using while loop

`while` loop is used to loop through every element of NumPy array. During each iteration, the square of the element is calculated and stored in the original array.

```import numpy as np
arr = np.array([1, 2, 3, 4])
i=0
while i < arr.size:
arr[i] = arr[i]*arr[i]
i = i + 1
print(arr)```

Output

`[ 1  4  9 16]`

## Square every element in 2D NumPy array using while loop

```import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
rows, cols = arr.shape
i=0
while i < rows:
j = 0
while j < cols:
arr[i, j] = arr[i, j]*arr[i, j]
j = j + 1
i = i + 1
print(arr)```

Output

```[[ 1  4  9 16]
[25 36 49 64]]```

## Square every element in 1D NumPy array using nditer

By default, `nditer` does not allow the modification of NumPy array. To overcome this problem, you will need to use `op_flags` parameter and pass `readwrite` value to it.

```import numpy as np
arr = np.array([1, 2, 3, 4])
t[...] = t*t
print(arr)```

Output

`[ 1  4  9 16]`

## Square every element in 2D NumPy array using nditer

```import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
```[[ 1  4  9 16]