In Python, you can use the `numpy`

library when working with arrays and certain math concepts like matrices and linear algebra.

But like every other aspect of learning and working with a programming language, errors are unavoidable.

In this article, you'll learn how to fix the "TypeError: only size-1 arrays can be converted to Python scalars" error which mostly occurs when using the `numpy`

library.

## What Causes the `TypeError: only size-1 arrays can be converted to Python scalars`

Error in Python?

The "TypeError: only size-1 arrays can be converted to Python scalars" error is raised when we pass in an array to a method that accepts only one parameter.

Here's an example:

```
import numpy as np
y = np.array([1, 2, 3, 4])
x = np.int(y)
print(x)
# TypeError: only size-1 arrays can be converted to Python scalars
```

The code above throws the "TypeError: only size-1 arrays can be converted to Python scalars" error because we passed the `y`

array to the NumPy `int()`

method. The method can only accept one parameter.

In the next section, you'll see some solutions for this error.

## How to Fix the `TypeError: only size-1 arrays can be converted to Python scalars`

Error in Python

There are two general solutions for fixing the "TypeError: only size-1 arrays can be converted to Python scalars" error.

### Solution #1 – Using the `np.vectorize()`

Function

The `np.vectorize()`

function can accept a sequence/an array as its parameter. When printed out, it returns an array.

Here's an example:

```
import numpy as np
vector = np.vectorize(np.int_)
y = np.array([2, 4, 6, 8])
x = vector(y)
print(x)
# [2, 4, 6, 8]
```

In the example above, we created a `vector`

variable which will "vectorize" any parameter passed to it: `np.vectorize(np.int_)`

.

We then created an array and stored it in the `y`

variable: `np.array([2, 4, 6, 8])`

.

Using the `vector`

variable we created initially, we passed the `y`

array as a parameter: `x = vector(y)`

.

When printed out, we got the array — `[2, 4, 6, 8]`

.

### Solution #2 – Using the `map()`

Function

The `map()`

function accepts two parameter in this case — the NumPy method and the array.

```
import numpy as np
y = np.array([2, 4, 6, 8])
x = np.array(list(map(np.int_, y)))
print(x)
# [2, 4, 6, 8]
```

In the example above, we nested the `map()`

function in a `list()`

method so that we get the array retuned as a list and not a map object.

### Solution #3 – Using the `astype()`

Method

We can use the `astype()`

method to convert a NumPy array to integers. This will prevent the "TypeError: only size-1 arrays can be converted to Python scalars" error from being raised.

Here's how:

```
import numpy as np
vector = np.vectorize(np.int_)
y = np.array([2, 4, 6, 8])
x = y.astype(int)
print(x)
# [2 4 6 8]
```

## Summary

In this article, we talked about the "TypeError: only size-1 arrays can be converted to Python scalars" error in Python.

It is raised when we pass an array as a parameter to a `numpy`

method that accepts only one parameter.

To fix the error, we used different methods like the `np.vectorize()`

function, `map()`

function, and `astype()`

method.

Happy coding!