Я использую numpy==1.24.0.
При запуске этой строки кода примера:
import numpy as np
num = np.float(3)
Я получаю эту ошибку:
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'
Пожалуйста помоги мне с этим.
Это был стандартный объект Python float, но, как уже упоминалось, numpy.float устарел... и был удален в версии 1.24. Вы можете использовать float или выбрать один из np.float32, np.float64, np.float128 (это все?!). Второй вариант мне кажется разумным.
Так зачем вы используете np.float, если это не работает?
@hpaulj: мы используем это для поддержки старой базы кода.
Поскольку np.float устарел и в моей кодовой базе np.float находится в нескольких местах, на данный момент я понизил версию Numpy. Это сработало для меня: pip install numpy == 1.22.4






Я удалил numpy.py, затем обновил свой numpy, и это сработало! Примечание: пустая версия = 1.23.3
Похоже, np.float был удален в версии 1.24. Наличие собственного файла «numpy.py» вызовет проблему, как вы говорите. Но также может быть, что np.float устарел. Посмотрим, что об этом скажет ОП.
Ответ уже есть в комментариях @mattdmo и @tdelaney:
numpy 1.20 (примечания к выпуску) устарели numpy.float, numpy.int и подобные псевдонимы, в результате чего они выдают предупреждение об устаревании
numpy 1.24 (примечания к выпуску) полностью удалил эти псевдонимы, вызывая ошибку при их использовании
Во многих случаях вы можете просто заменить устаревшие типы numpy эквивалентным встроенным типом Python, например. numpy.float становится «простым» Python float.
Подробные рекомендации по работе с различными устаревшими типами см. в таблице и рекомендациях в примечаниях к выпуску для версии 1.20:
...
Чтобы дать четкое руководство для подавляющего большинства случаев, для типов
bool,object,str(иunicode) использование простой версии короче и понятнее и, как правило, является хорошей заменой. Дляfloatиcomplexвы можете использоватьfloat64иcomplex128, если хотите уточнить точность.Для
np.intпрямая замена наnp.int_илиintтакже хороша и не изменит поведение, но точность по-прежнему будет зависеть от компьютера и операционной системы. Если вы хотите быть более точным и просмотреть текущее использование, у вас есть следующие альтернативы:
np.int64илиnp.int32, чтобы точно указать точность. Это гарантирует, что результаты не будут зависеть от компьютера или операционной системы.np.int_илиint(по умолчанию), но имейте в виду, что это зависит от компьютера и операционной системы.- Типы С:
np.cint(int),np.int_(long),np.longlong.np.intpкоторый является 32-битным на 32-битных машинах 64-битным на 64-битных машинах. Это может быть лучший тип для индексации....
Если у вас есть зависимости, использующие устаревшие типы, быстрым обходным путем будет откат вашей версии numpy до <1.24 (как предлагается в некоторых других ответах), ожидая, пока зависимость наверстает упущенное. Кроме того, вы можете сами создать патч и открыть запрос на включение или исправить зависимость в своем собственном коде.
В версии 1.24:
Срок устаревания псевдонимов np.object, np.bool, np.float, np.complex, np.str и np.int истек (представляет NumPy 1.20). Некоторые из них теперь будут выдавать FutureWarning в дополнение к ошибке, поскольку в будущем они будут сопоставлены со скалярами NumPy.
pip install "numpy<1.24" чтобы обойти это.
In [1]: import numpy as np
In [2]: np.__version__
Out[2]: '1.23.5'
In [3]: np.float(3)
<ipython-input-3-8262e04d58e1>:1: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
np.float(3)
Out[3]: 3.0
np.float— это устаревший псевдоним встроенной функцииfloat. Чтобы отключить это предупреждение, используйтеfloatотдельно. Это не изменит никакого поведения и безопасно. Если вам нужен именно скалярный тип numpy, используйте здесьnp.float64. Устарело в NumPy 1.20; для получения более подробной информации и рекомендаций: numpy.org/devdocs/release/1.20.0-notes.html#deprecations