pythonnumpy

How can I solve error "module 'numpy' has no attribute 'float'" in Python?


I am using NumPy 1.24.0.

On running this sample code line,

import numpy as np
num = np.float(3)

I am getting this error:

Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/home/ubuntu/.local/lib/python3.8/site-packages/numpy/__init__.py", line 284, in __getattr__
    raise AttributeError("module {!r} has no attribute " AttributeError: module 'numpy' has no attribute 'float'

How can I fix it?


Solution

  • The answer is already provided in the comments by @mattdmo and @tdelaney:

    In many cases you can simply replace the deprecated NumPy types by the equivalent Python built-in type, e.g., numpy.float becomes a "plain" Python float.

    For detailed guidelines on how to deal with various deprecated types, have a closer look at the table and guideline in the release notes for 1.20:

    ...

    To give a clear guideline for the vast majority of cases, for the types bool, object, str (and unicode) using the plain version is shorter and clear, and generally a good replacement. For float and complex you can use float64 and complex128 if you wish to be more explicit about the precision.

    For np.int a direct replacement with np.int_ or int is also good and will not change behavior, but the precision will continue to depend on the computer and operating system. If you want to be more explicit and review the current use, you have the following alternatives:

    • np.int64 or np.int32 to specify the precision exactly. This ensures that results cannot depend on the computer or operating system.
    • np.int_ or int (the default), but be aware that it depends on the computer and operating system.
    • The C types: np.cint (int), np.int_ (long), np.longlong.
    • np.intp which is 32bit on 32bit machines 64bit on 64bit machines. This can be the best type to use for indexing.

    ...

    If you have dependencies that use the deprecated types, a quick workaround would be to roll back your NumPy version to 1.24 or less (as suggested in some of the other answers), while waiting for the dependency to catch up. Alternatively, you could create a patch yourself and open a pull request, or monkey patch the dependency in your own code.