1 Punkte von GN⁺ 2024-06-17 | 2 Kommentare | Auf WhatsApp teilen

Neue Funktionen

  • Neuer String-dtype mit variabler Länge, StringDType, sowie der Namespace numpy.strings für String-Operationen hinzugefügt.
  • Unterstützung für float32 und longdouble in allen numpy.fft-Funktionen.
  • Unterstützung des Array-API-Standards im Haupt-Namespace numpy.

Performance-Verbesserungen

  • Die Sortierfunktionen (sort, argsort, partition, argpartition) wurden mit Intel x86-simd-sort und der Google-Highway-Bibliothek beschleunigt.
  • Unterstützung für macOS Accelerate und Bereitstellung binärer Wheels für macOS >=14, was die Performance bei linearen Algebra-Operationen deutlich verbessert.
  • Operationen mit Strings fester Länge in numpy.char wurden beschleunigt.
  • Neue Tracing- und Inspektions-API opt_func_info hinzugefügt, mit der sich hardware-spezifische Kernel prüfen und verwenden lassen.

Verbesserungen der Python-API

  • Klare Trennung zwischen öffentlicher und nicht öffentlicher API sowie neue Modulstruktur.
  • Viele veraltete Funktionen und Aliase entfernt, wodurch Lernen und Nutzung einfacher werden.
  • Standardisierte dtype-Namen und neue Prüf-Funktion isdtype hinzugefügt.

Verbesserungen der C-API

  • Neue öffentliche C-API zum Erstellen benutzerdefinierter dtypes hinzugefügt.
  • Alte Funktionen und Makros entfernt, nicht öffentliche Interna verborgen.
  • Neue Initialisierungsfunktionen: PyArray_ImportNumPyAPI und PyUFunc_ImportUFuncAPI.

Verbessertes Verhalten

  • Übernahme von NEP 50 zur Verbesserung des Type-Promotion-Verhaltens, das nun nur noch vom dtype und nicht von den Datenwerten des Eingabe-Arrays abhängt.
  • Unter Windows wurde der Standard-Integer-Typ von int32 auf int64 geändert.
  • Die maximale Anzahl von Array-Dimensionen wurde von 32 auf 64 erhöht.

Dokumentation

  • Die Navigation im Referenzleitfaden wurde deutlich verbessert.
  • Die Dokumentation zum Build aus dem Quellcode wurde vollständig neu geschrieben.

Entfernte Elemente der Python-API

  • np.geterrobj, np.seterrobj und das zugehörige ufunc-Keyword-Argument extobj= entfernt.
  • np.cast entfernt, ersetzt durch np.asarray(arg, dtype=dtype).
  • np.source entfernt, ersetzt durch inspect.getsource.
  • np.lookfor entfernt.
  • numpy.who entfernt; empfohlen wird die Nutzung des Variablen-Explorers einer IDE wie Spyder oder Jupyter Notebook.
  • Mehrere veraltete Funktionen und Aliase entfernt.

Meinung von GN⁺

  • Performance-Verbesserungen: Durch die neuen Sortieralgorithmen und die Unterstützung für macOS Accelerate wird eine deutlich höhere Geschwindigkeit bei der Datenverarbeitung erwartet.
  • API-Bereinigung: Durch das Entfernen veralteter Funktionen und Aliase wird die Nutzung von NumPy intuitiver und schlanker.
  • Type Promotion: Durch die Übernahme von NEP 50 wird das Type-Promotion-Verhalten vorhersehbarer. Das dürfte helfen, unerwartete Ergebnisse bei Operationen mit gemischten dtypes zu reduzieren.
  • Verbesserte Dokumentation: Durch die Verbesserungen am Referenzleitfaden und an der Build-Dokumentation können Entwickler NumPy leichter verstehen und einsetzen.
  • Kompatibilitätsprobleme: Da es viele API-Änderungen gibt, ist bestehender Code möglicherweise nicht kompatibel. Es ist notwendig, den Migrationsleitfaden zu konsultieren und den Code entsprechend zu aktualisieren.

2 Kommentare

 
eususu 2024-06-18

Da wird es wohl viele inkompatible Pakete geben..

 
GN⁺ 2024-06-17
Hacker-News-Kommentare
  • Methode zur Kombination komplexer Operationen: Es wird eine einfachere und leichter zu merkende Methode benötigt, um nicht elementweise Operationen zusammenzusetzen. Es gibt zu viele verschiedene Wege, sodass man es jedes Mal neu lernen muss.

  • Änderung des Standard-Integer-Typs unter Windows: Unter Windows wurde der Standard-Integer-Typ von int32 auf int64 geändert. Das ist gut, weil es nun mit anderen Plattformen übereinstimmt.

  • Wichtiges NumPy-Update: Für Nutzer, die NumPy selbst nicht häufig direkt verwenden, gibt es möglicherweise keine großen Veränderungen. Sie verwenden hauptsächlich pandas und scipy und greifen nur bei Bedarf auf NumPy-Algorithmen zurück.

  • Update-Zyklus: Bei größeren Updates wird nicht sofort aktualisiert; stattdessen wartet man lieber, bis eine stabile Version erschienen ist.

  • Versionsmanagement: Bei der ersten großen Major-Release mit großen Änderungen nach 18 Jahren wäre es vielleicht besser, unter einer neuen Version zu forken. Eine Installation per pip install numpy2 wäre sinnvoll, damit man sich keine Sorgen um die Kompatibilität mit anderen Bibliotheken machen muss.

  • Probleme mit der Paketkompatibilität: Einige Pakete sind nicht auf Version 1.x festgelegt, was zu Problemen führt. Das lässt sich vorübergehend mit pip install numpy==1.* lösen.

  • Link zu den Release Notes: Bereitstellung des Links zu den NumPy-2.0.0-Release-Notes. NumPy 2.0.0 Release Notes