Diagram
TypeError: can’t convert np.ndarray of type numpy.object_ error occurs when trying to “perform an operation that requires a specific data type, but your ndarray is of type numpy.object_.”
The numpy.object_ data type is a generic data type that can hold any Python object and is incompatible with operations requiring numeric types.
Reproduce the error
import numpy as np
# Create a numpy array with mixed data types
arr = np.array([1, 2, '3'])
result = np.mean(arr)
print(result)
Output
TypeError: can't convert np.ndarray of type numpy.object_
# OR
numpy.core._exceptions._UFuncNoLoopError:
ufunc 'add' did not contain a loop with signature matching types
(dtype('<U21'), dtype('<U21')) -> None
How to fix it?
Here are two ways to fix the TypeError: can’t convert np.ndarray of type numpy.object_.
- Convert the data type of the ndarray using the astype() function.
- Data Cleaning
Solution 1: Convert the data type of the ndarray using the astype() function
import numpy as np
# Create a numpy array with mixed data types
arr = np.array([1, 2, '3'])
a_numeric = arr.astype(np.int64)
print(np.mean(a_numeric))
Output
2.0
Solution 2: Data Cleaning
import numpy as np
arr = np.array([1, 2, '3'])
def to_numeric(value):
try:
return int(value)
except ValueError:
try:
return float(value)
except ValueError:
return None
a_numeric_converted = np.array([to_numeric(x)
for x in arr if to_numeric(x) is not None])
# Calculate the mean of the converted array
mean_value_converted = np.mean(a_numeric_converted)
print(mean_value_converted)
Output
2.0
The inspection reveals that all the elements in the arr have the data type numpy.str_, which means they are all strings. This is why the filtering step results in an empty array, as none of the elements are recognized as int or float.
Given this, a more appropriate approach would be to attempt to convert each element to a number (either integer or float) and, if successful, include it in the numeric array.
That’s it!
Related posts
TypeError: type numpy.ndarray doesn’t define __round__ method
TypeError: ‘numpy.ndarray’ object is not callable
TypeError: unhashable type: ‘numpy.ndarray’
TypeError: ‘numpy.float64’ object cannot be interpreted as an integer
TypeError: ‘numpy.float64’ object is not callable
TypeError: ‘float’ object is not subscriptable

Krunal Lathiya is a seasoned Computer Science expert with over eight years in the tech industry. He boasts deep knowledge in Data Science and Machine Learning. Versed in Python, JavaScript, PHP, R, and Golang. Skilled in frameworks like Angular and React and platforms such as Node.js. His expertise spans both front-end and back-end development. His proficiency in the Python language stands as a testament to his versatility and commitment to the craft.