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

When working with arrays in Python, you may come across an error message **only size 1 arrays can be converted to Python scalars**. This error mainly occurs when we try to convert an array of float values to integer values. In this article, we will explore what this error message means, why it occurs, and how to resolve it. Before that let’s understand what is the meaning of the term **Python Scalar**.

## What is a Python Scalar?

In Python, a scalar is a single value, such as an integer, float, or Boolean. Scalars are different from arrays, which are collections of multiple values. Scalars are used to perform mathematical and logical operations on single values.

## What does the **Only Size 1 Arrays can be Converted to Python Scalars** error means?

**The error message only size 1 arrays can be converted to Python scalars occurs when you try to convert an array with more than one element to a scalar value.**

Here’s an example of how this error might occur:

import numpy as np

a = np.array([1, 2.0, 3.3])

np.int(a)

**Output**

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: only size-1 arrays can be converted to Python scalars

The **only size-1 arrays can be converted to Python scalars** error occurs when trying to perform an operation between an array and a scalar value in Python. This error is encountered because Python does not allow operations between arrays and scalar values, except when the array has only one element.

For instance, when we tried to convert an array with multiple values to a single integer value using the **np.int()** function, we encountered this error. The **np.int()** function expects a scalar or single value as input, but we are providing an array having multiple values.

## How to fix **only size-1 arrays can be converted to Python scalars** error?

There are several ways to fix this error. Some possible solutions are given below:

### Using **np.int_()** Method

import numpy as np a = np.array([1, 2.0, 3.3]) np.int_(a)

**Output:**

`array([1, 2, 3])`

You can observe, the error **TypeError: only size-1 arrays can be converted to Python scalars** is resolved now. Because the **np.int_()** method is used here to convert each element of an array a to an integer value. Unlike the **np.int()** function, the **np.int_()** method creates a new array with the converted values instead of trying to convert the entire array to a scalar value. This method is useful when you want to convert an array of values to integers while preserving the original array shape and size.

### Using **.astype()** Method

To fix the error **only size-1 arrays can be converted to Python scalars** use the **.astype()** method. We can convert the datatype of the array to an integer using the **.astype()** method.

import numpy as np a = np.array([1, 2.0, 3.3]) a_int = a.astype(int) print(a_int)

**Output:**

[1,2,3]

In this example, the **.astype()** method is used to convert the datatype of the array to an integer. By using the **.astype()** method in this way, an array of any size and shape can be converted to a new array with the converted values.

### Using **np.vectorize()** Method

import numpy as np def convert_to_int(x): return int(x) a = np.array([1.5, 2.7, 3.9]) a_int = np.vectorize(convert_to_int)(a) print(a_int)

**Output:**

[1,2,3]

In this example, a function **convert_to_int()** is defined that takes a float value as input and returning an integer value. Next, an array a is created with float values. The **np.vectorize()** method is then used to apply the **convert_to_int()** function to each element of the array. This results in a new array a_int with the converted integer values. Finally, the resulting array is printed.

The **np.vectorize()** method is a convenient way to apply a function to each element of an array. The input array is automatically converted to a one-dimensional array by this method. The function is then applied to each element of the array and the result is returned as a new array with the same shape as the input array. By using this method, an array of any size and shape can be converted to a new array with the converted values.

### Using** map() **Method

Another solution to fix the error **only size-1 arrays can be converted to Python scalars** is using the **map(**) method. Consider the below example to see how to do this:

import numpy as np def convert_to_int(x): return int(x) a = np.array([1, 2.0, 3.3]) a_int = list(map(convert_to_int, a)) print(a_int)

**Output:**

[1,2,3]

In this example, a function named **convert_to_int()** is defined that takes an array element as input and returning its integer value using the **int()** function. Then, an array a is created with float values. The **map()** method is used to apply the **convert_to_int()** function to each element of the array.

**Note:** By using the **map()** method in this way, an array of any size and shape can be converted to a new list with the converted values.

**Using np.round() Method**

To fix the error **only size-1 arrays can be converted to Python scalars**, we can use the **np.round()** function from **NumPy**.

import numpy as np

# Create an array of float values

a = np.array([1.2, 2.5, 3.7])

# Round the elements of the array to the nearest integer

a_int = np.round(a).astype(int)

# Print the resulting array

print(a_int)

The **np.round()** method is used to round the elements of the array to the nearest integer. In python **np.round()** method rounds the elements of an array to the nearest integer, which effectively converts the array from a float type to an integer type. Then, **astype()** method is used to convert the resulting array to an integer type.

## Conclusion

In conclusion, the error **only size-1 arrays can be converted to Python scalars** occurs when attempting to apply a function that expects a scalar value to a **NumPy** array with multiple values. There are several ways to fix this error, such as using the **np.int_()** method, using **.astype()** method, **np.vectorize()** method, **map() **function and **np.round()** method. Additionally, using the **np.round()** method can also be an effective way to convert an array of float values to an array of integers, as it rounds each value to the nearest integer. By applying these methods, we can convert an array of float values to an array of integers without encountering this error.

Good Luck with your Learning !!

**Related Topics:**

How to Implement d’wave qbsolv in Python

Resolve Javascript error: ipython is not defined

Write a Program to Reverse a Number in Python

* Coding Spell | Python Journey* |

*About Us*- How to Fix – TypeError: only size-1 arrays can be converted to Python scalars - 16 October 2023
- How to Implement d’wave qbsolv in Python - 16 October 2023
- Resolve Javascript error: ipython is not defined - 15 October 2023