Fix – attributeerror: module numpy has no attribute int

Fix - attributeerror: module numpy has no attribute int

The attributeerror: module numpy has no attribute int error occurs when we try to call the int attribute of NumPy which does not exist. This article walks you through the reasons behind this error and also we will discuss possible solutions to fix it.

attributeerror: module numpy has no attribute int

Why does attributeerror: module numpy has no attribute int occurs and How to Fix it?

This error can occur due to various reasons. Below are some of the possible causes of the error along with their corresponding solutions.

Reason 1: NumPy Aliases for Built-in Python Functions are Removed

The attributeerror: module numpy has no attribute int error occurred due to the removal of aliases for built-in Python functions in NumPy version 1.24 and above. Before version 1.20, aliases such as np.int were available in NumPy and were used as an alias for int(), while np.float was an alias for float(), and so on. However, as these aliases created confusion for new users and could potentially lead to duplication of functionality, they were deprecated in NumPy version 1.20 and completely removed in version 1.24.

Now, if someone tries to use these aliases in NumPy version 1.24 or higher, the AttributeError: module numpy has no attribute int error will occur. 

Let’s see an example below:

import numpy as np

score = np.int(20)  

Output

DeprecationWarning: `np.int` is a deprecated alias for the built-in `int`.

On the execution of the above code, we get DeprecationWarning that shows that np.int alias is depreciated for the built-in int function. Let’s check the version of numpy installed on my system using the following code snippet:

import numpy as np

print(np.__version__)

Output

1.21.5

We can see currently, we are using NumPy version 1.21.5 which is why we got the deprecation warning. As we have seen above np.int alias was deprecated in NumPy version 1.20. 

Now let’s install version 1.24 of the NumPy and run the above code to see if we get any errors.

pip install numpy==1.24

We have successfully installed the Numpy v1.24. Now let’s run the code:

import numpy as np

myNumber = np.int(50)  
print(myNumber)

Output

AttributeError: module 'numpy' has no attribute 'int'

This message indicates that the code attempted to access an attribute named int in the NumPy module, but the attribute does not exist. This happened because the code assumes that NumPy has the same attributes as the built-in int type in Python, which is not the case.

Solution 1:

To Fix this error, it is recommended to use the built-in Python functions directly instead of using the NumPy aliases. Or replace these aliases with the equivalent NumPy scalar types.

Have a look at the below table to see the list of the depreciated aliases and the equivalent built-in Python types as well Numpy provides NumPy scalar type that can be replaced with these aliases.

DeprecatedPython typesNumPy scalar types for precision
numpy.intintnumpy.int_ (default), numpy.int64, or numpy.int32
numpy.floatfloatnumpy.float64, numpy.float_, numpy.double (equivalent)
numpy.boolboolnumpy.bool_
numpy.strstrnumpy.str_
numpy.objectobjectnumpy.object_
numpy.complexcomplexnumpy.complex128, numpy.complex_, numpy.cdouble (equivalent)
numpy.unicodestrnumpy.unicode_
numpy.longintnumpy.int_ (C long), numpy.longlong (largest integer type

Please find the link to the documentation where this table is defined.

The NumPy module has removed the 8 aliases listed in the table above. If you use any of these aliases in your code, it will result in an AttributeError being raised. For instance, if you attempt to use the numpy.float alias instead of the built-in Python float type by calling numpy.float(20), you will encounter the following error message: AttributeError: module ‘numpy’ has no attribute ‘float’.

Now, fix the AttributeError: module ‘numpy’ has no attribute ‘int’ error, in the above code, using Python built-in int datatype instead of np.int. This can be seen in the following code example:

import numpy as np

myNumber = int(50)  
print(myNumber)

Output

50

This code created a variable myNumber with a value of 50 using the built-in int() function. The code then printed the value of myNumber on the console.

Alternatively, we can use NumPy scalar types to create the variable. This is demonstrated in the following code example:

import numpy as np

myNumber = np.int_(50)  
print(myNumber)

Output

50

This code also created a variable myNumber but here it used NumPy’s scalar type np.int_() and printed it on the console.

Note: Using Python’s built-in data type and NumPy scalar type instead of NumPy aliases can help avoid the AttributeError: module ‘numpy’ has no attribute ‘int’ error.

Solution 2: Downgrade Numpy Version

Another possible solution to fix this issue is to use an outdated NumPy version. If you are using an updated version of NumPy try to downgrade to the older version. As discussed above, the aliases were removed in version 1.24, so if you downgrade to 1.23.X, you will still be able to use them. 

To downgrade the NumPy version run the code below:

pip install "numpy<1.24.0"

After installing it, you will able to use numpy.int and similar aliases without encountering any errors.

Note: Downgrading the Numpy Version is not recommended. Because the updated version offers advanced functionalities that are not available in the older versions. It is better to stay up-to-date with the latest version to ensure that your code runs efficiently and effectively.

Reason 2: Misspelling or typo: 

The error may also occur if there is a typo or misspelling in the code. For instance, you might have written numpy.in instead of numpy.int.

Solution:

To Fix this issue, check your code carefully for any typos or misspellings in the NumPy attribute. Correct any errors you find and run your code again.

Conclusion:

The AttributeError: module ‘numpy’ has no attribute ‘int’ error occurs when attempting to use the int attribute of the NumPy module, which does not exist. To fix the error, avoid using the numpy.int attribute of NumPy and use the appropriate data types from the NumPy module(scalar type) or use Python built-in types for the removed NumPy aliases. When working with numerical data remember to always check the documentation of the libraries you are using and use the correct data types to avoid errors. Also, check the code carefully for any typos or spelling mistakes.

Read More:

Easiest Way to Connect Hive with Python:PyHive

How to Modify Python Global Variable inside a Function

How to Convert JSON to YAML

TypeError: method() missing 1 required positional argument: ‘self

FIX – TypeError: list indices must be integers or slices not float

Coding Spell Python Journey | About Us

Latest posts by Muhammad Usman Shafique (see all)