AttributeError: module 'numpy' has no attribute 'float'
Python hatası · NumPy 1.24 ve sonrası
np.float, Python’ın kendi float'ının başka bir adıydı. NumPy onu 1.20’de kullanımdan kalkacak diye işaretledi ve 1.24’te (Aralık 2022) np.int, np.object, np.str ve np.complex ile birlikte kaldırdı. Hata iletisinin devamı yerine neyin kullanılacağını söyler.
Neden olur
Bu adlar yalnız Python’ın yerleşik türlerini gösteriyordu ve NumPy’nin np.float64 gibi kendi türleriyle kolayca karışıyordu. 2023’ten önce yazılmış kod çoğu zaman onları hâlâ kullanıyor. NumPy 2.0 (Haziran 2024) başka adları da kaldırdı; aralarında np.NaN, np.Inf, np.float_ ve np.product var.
Nasıl düzeltilir
Yerleşik adı kullan; kod önceden ne yapıyorsa aynısını yapar:
Önce
values = np.array(raw, dtype=np.float)
count = np.int(values.sum())
Sonra
values = np.array(raw, dtype=float)
count = int(values.sum())
NumPy’nin kendi türünü istiyorsan np.float64 ya da np.int64 yaz. NumPy 2.0’ın kaldırdığı adlar için: np.NaN → np.nan, np.float_ → np.float64, np.product → np.prod.
NoteRun’da
NoteRun defteri sen çalıştırmadan önce denetler ve defter NumPy’ye hangi adı vermiş olursa olsun (np ya da başka) bu adları bulur. Hepsini düzelt, NumPy 1.24’ün de 2.0’ın da kaldırdığı bütün adları tek dokunuşla değiştirir. Sen dokunana kadar hiçbir şey değişmez, her değişikliği önce görürsün, Geri al defteri eski hâline getirir.