# How to Convert a Tensor to a NumPy Array in TensorFlow?

There are two ways to convert a Tensor to a NumPy array:

• TensorFlow version 2.x — use `tensor.numpy()`
• TensorFlow version 1.x — use `tensor.eval(session=tf.compat.v1.Session())`

Let’s dive into these two methods in greater detail.

## Method 1: Explicit Tensor to NumPy Array Conversion in TensorFlow 2.x

To convert a tensor `t` to a NumPy array in TensorFlow version 2.0 and above, use the `t.numpy()` built-in method. The resulting object is a NumPy array of type `numpy.ndarray`.

Here’s a code example that converts tensor `t` to array `a`.

```import tensorflow as tf

t = tf.constant([[1, 2], [4, 8]])
a = t.numpy()

print(a)
print(type(a))
```

The output of this code snippet shows that the result is a NumPy array:

```[[1 2]
[4 8]]
<class 'numpy.ndarray'>```

You can try this yourself in an interactive Jupyter notebook with Colab:

## Method 2: Automatic Conversion using NumPy Operations on Tensors

If you apply a NumPy operation on Tensors, the result will automatically be converted to a NumPy `ndarray`.

In the following code, we first create a Tensor and store it in variable `t` by creating a Tensor constant and using TensorFlow’s multiplication routine to show that the result of a TensorFlow operation is a Tensor data type.

Then, we perform the `np.add()` NumPy operation on the Tensor obtained through the previous operation. Naturally, the result is a NumPy `ndarray` so the conversion has been performed automatically by NumPy.

```import numpy as np
import tensorflow as tf

# Create Tensor
t = tf.constant([[1, 2], [4, 8]])
t = tf.multiply(t, 2)
print(t)

# NumPy operation results in ndarray
print(a)
```

Note that if the Tensor may be held in GPU memory. In this case, the conversion may not be possible because NumPy relies on the host machine’s RAM that may be more limited than the GPU memory.

## Method 3: Explicit Conversion of Tensors to NumPy Arrays in TensorFlow 1.x

To convert a tensor `t` to a NumPy array in TensorFlow versions 1.x (such as 1.14 and 1.15), use the `t.eval()` built-in method and pass the s`ession` argument like so: `t.eval(session=tf.compat.v1.Session())`. The resulting object is a NumPy array of type `numpy.ndarray`.

Session objects in TensorFlow hold the execution state and encapsulate the execution environments of Operation objects.

Here’s a code example that converts tensor `t` to array `a`.

```%tensorflow_version 1.x
import tensorflow as tf

t = tf.constant([[1, 2], [4, 8]])
a = t.eval(session=tf.compat.v1.Session())

print(a)
print(type(a))```

The output is the same NumPy array

```[[1 2]
[4 8]]
<class 'numpy.ndarray'>```

While this method works, it’s usually not needed because you don’t still use TF v1, do you? 😉

## Where to Go From Here

Thanks for reading the blog tutorial anyways—to keep improving your Python skills, why not download a couple of my hand-crafted Python, machine learning, and NumPy cheat sheets? My subscribers love them! 