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!