While working with NumPy in Python, you might get the following error:
TypeError: 'numpy.ndarray' object is not callable
This error usually occurs when you try to call a NumPy array like a function by using round brackets.
The following tutorial shows examples that cause this error and how to fix it.
How you get this error
Suppose you defined a NumPy array in your source code as follows:
import numpy as np
res = np.array([4, 5, 2, 3, 5, 4, 4, 9])
Next, you try to access the first element of the array at index 0
like this:
x = res(0)
You get the following error:
Traceback (most recent call last):
File "main.py", line 4, in <module>
x = res(0)
TypeError: 'numpy.ndarray' object is not callable
In the code, you used round brackets (0)
to access the first element in the array, which causes Python to think you’re trying to call the res
variable like a function.
Since res
is an array and not a function, you receive this error.
How to fix this error
To resolve this error, you need to replace the round brackets with square brackets []
so that Python knows you’re trying to access an array element:
import numpy as np
res = np.array([4, 5, 2, 3, 5, 4, 4, 9])
x = res[0]
print(x) # 4
In the example above, we assigned the first element of the res
array to the x
variable without raising the error.
Using square brackets, you can access any valid element in the array:
# Sum the first and last element in the array
x = res[0] + res[-1]
print(x) # 13
Now you’ve learned how to fix TypeError: 'numpy.ndarray' object is not callable
that occurs when using NumPy in your source code.
Alternative cause: You have a function and an array with the same name
This error can also occur when you have a function and an array with the same name.
For example, suppose you declare a function and a variable named greet
as follows:
import numpy as np
def greet():
print("Hello World!")
greet = np.array(['John, Lisa'])
greet()
The greet
variable overwrites the greet()
function, causing you to call a NumPy array instead of a function.
To fix this error, you need to change the variable name:
import numpy as np
def greet():
print("Hello World!")
friends = np.array(['John, Lisa'])
greet()
The function greet
can now be called and the error is resolved.
More resources
The following tutorials explain how you can fix other common errors when using the NumPy library:
How to fix NameError: name ’np’ is not defined
Fix Python ’numpy.float64’ object is not iterable error
I hope the tutorials are helpful. See you in other articles! 👍