# Basic Tensor Calculation using NumPy in Python

In this tutorial, we will learn

• What is tensor
• How to create a tensor
• Basic operations on tensor

## What is Tensor?

Tensors are multi-dimensional arrays. To be specific it is an n-dimensional array with n>2. They are used in linear algebra like vector and matrices.

Tensors are immutable that is you cannot update the contents but can create a new one. The tensor notation is much similar to matrix notation denoted by a capital letter

```      [[t111, t121, t131]  [[t112, t122, t132]  [[t113, t123, t133]
T =([  [t211, t221, t231],  [t212, t222, t232],  [t213, t223, t233]   ])
[t311, t321, t331]]  [t312, t322, t332]]  [t313, t323, t333]]```

Tensors can be created by using array()  function from Numpy which creates n-dimensional arrays. For that, we are going to need the Numpy library.

To install Numpy with Anaconda prompt, open the prompt and type:

`conda install numpy`

If you want to install with pip, just replace the word ‘conda’ with ‘pip’.

I have used Jupyter notebook to implement this, you can choose whichever python editor you want.

`import numpy as np  #importing the library`

## Creating Tensor-

Let’s start by creating tensor-

```# creating tensor
T = np.array([
[[1,4,7],      [2,5,8],      [3,6,9]],
[[10,40,70],   [20,50,80],   [30,60,90]],
[[100,400,700],[200,500,800],[300,600,900]],
])
print(T)
print("This tensor is of dimension:",T.shape)```

Output:

```[[[  1   4   7]
[  2   5   8]
[  3   6   9]]

[[ 10  40  70]
[ 20  50  80]
[ 30  60  90]]

[[100 400 700]
[200 500 800]
[300 600 900]]]
This tensor is of dimension: (3, 3, 3)```

For this tensor axis 0 specifies level, axis 1 specifies row and axis 2 specifies the column.

## Basic Operations on Tensor-

Now, let’s do some basic arithmetic operations on tensors

```# tensor addition
import numpy as np
T1 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T2 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T = T1 + T2
print(T)```

Output:

```[[[10 20 30]
[40 50 60]
[70 80 90]]

[[ 4  8 12]
[16 20 24]
[28 32 36]]

[[ 6 12 18]
[24 30 36]
[42 48 54]]]

```

## Tensor Subtraction in Python

Similarly applies for Subtraction

```# tensor subtraction
import numpy as np
T1 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T2 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T = T1 - T2
print(T)```

Output:

```[[[0 0 0]
[0 0 0]
[0 0 0]]

[[0 0 0]
[0 0 0]
[0 0 0]]

[[0 0 0]
[0 0 0]
[0 0 0]]]```

## Tensor Multiplication in Python

We can multiply tensor by multiplying arrays using Numpy. Tensor Multiplication is also known as Hadamard Product

```#tensor multiplication
T1 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T2 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T = T1*T2
print(T)```

Output:

```[[[  25  100  225]
[ 400  625  900]
[1225 1600 2025]]

[[   4   16   36]
[  64  100  144]
[ 196  256  324]]

[[   9   36   81]
[ 144  225  324]
[ 441  576  729]]]```

### Tensor Division

Similarly applies for the division

```T1 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T2 = np.array([
[[5,10,15],[20,25,30], [35,40,45]],
[[2,4,6],  [8,10,12],  [14,16,18]],
[[3,6,9],  [12,15,18], [21,24,27]],
])
T = T1/T2
print(T)```

Output:

```[[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]]```

#### Conclusion

In this tutorial, we learned about what tensors are and how to do arithmetic operations between tensors using Numpy.