Naarmate data science zich ontwikkelt, zijn veranderingen in veelgebruikte libraries onvermijdelijk. Dit keer krijgt deNumPy-library een update naar versie 2.0. Deze grote update is in juni 2024 uitgebracht en brengt veel nieuwe features en verbeteringen naar de populaire Python-library.
Met zo’n grote sprong in wijzigingen zijn er onvermijdelijk punten om op te letten die kunnen vereisen dat je je bestaande code aanpast.
In dit artikel delen we een overzicht van wat NumPy 2.0 omvat, de belangrijkste veranderingen en hoe je kunt migreren naar NumPy 2.0.
Introductie tot NumPy 2.0
Gebaseerd op jaren aan feedback en technologische vooruitgang is NumPy 2.0 een ambitieuze upgrade, anders dan de vele eerdere updates van de afgelopen jaren.
In hunreleaseblogpost introduceerden ze een vernieuwde API, verbeterde regels voor scalarpromotie, een nieuwe DType-API en een nieuw string-DType, compatibiliteitsverbeteringen en afstemming van API-standaarden. Door deze inspanningen zullen gebruikers significante verbeteringen in performance en documentatie merken.
Maar met zo’n grote verandering in de library brengt deze release ook wat verstoring met zich mee. Zo zijn de nieuwe API- en ABI-wijzigingen niet backward-compatible.
Grote nieuwe features
Volgens de releasenotes introduceert NumPy 2.0 ingrijpende wijzigingen. Dit zijn de belangrijkste:
API- en ABI-wijzigingen
In deze update zijn verschillendeopschoonwijzigingen doorgevoerd in de API en ABI (Application Binary Interface).
Met de nieuwe update, zoals beschreven in NEP (NumPy Enhancement Proposal) 52, laat NumPy zijn gebruikelijke nadruk op backward-compatibility deels los om een gestroomlijndere, schonere en eenvoudigere API te bieden.
Enkele opvallende wijzigingen:
Scheidingslijn tussen publieke en private API: Met een moduulstructuur is er nu een duidelijke splitsing tussen publieke en private API in de NumPy-API voor Python.
Voor de ABI-wijzigingen zal er sprake zijn van breuk in de nieuwe release. Dit beïnvloedt binaries van pakketten die de NumPy C-API gebruiken.
Alles wat gebouwd is tegen een eerdere NumPy 1.xx-release werkt niet met NumPy 2.0. Verderop deel ik hoe je volgens hun aanbevelingen kunt migreren. Je krijgt een ImportError‑melding, wat duidt op binaire incompatibiliteit.
Nieuwe DType-API en StringDType
Zoals voorgesteld inNEP 41, introduceert deze 2.0-update een nieuwe API voor het implementeren van door de gebruiker gedefinieerde, aangepaste datatypen met het StringDType-datatype. Deze nieuwe API biedt native ondersteuning voor variabele‑lengte stringdatatypen, waar NumPy‑gebruikers al lang om vragen.
Regels voor scalarpromotie
Aanvankelijk voorgesteld inNEP 50 zijn de scalarpromotieregels in NumPy ook bijgewerkt om verrassingen voor gebruikers te voorkomen. Voorheen hing promotie vaak af van de datawaarden van invoerarrays in plaats van alleen hun DTypes, wat verwarrend kan zijn.
Voor de nieuwe promotiepaden, zie de afbeelding hieronder:
Bron: NumPy DType-precisie en -promotie
Prestatieverbeteringen
Deze release brengt ook enkele prestatieverbeteringen.
Dit zijn enkele belangrijke verbeterpunten:
Snellere sorteerfuncties
Verbeteringen in de performance van lineaire‑algebrabewerkingen op macOS via macOS Accelerate
Windows-compatibiliteit
Om Windows-gebruikers beter te bedienen, heeft het NumPy-team in deze release ook verschillende compatibiliteitsproblemen opgelost.
Zo is het standaard integertype op Windows gewijzigd naar int64 in plaats van int32, om het standaardgedrag op andere OS‑platformen te matchen.
Verbeterde documentatie en bruikbaarheid
Er is meer documentatie toegevoegd aanNumPy’s moduulstructuur en de navigatie in de referentiegids is verbeterd. De documentatie overbouwen vanaf bron is ook volledig herschreven.
Hoe migreer je naar NumPy 2.0
Updaten naar NumPy 2.0
Om met deze nieuwe versie van NumPy aan de slag te gaan, moet je eerst upgraden van je huidige versie naar de nieuwste.
Gebruik daarvoor simpelweg de upgrade-optie in deze opdracht:
De upgrade-optie werkt gespecificeerde pakketten bij naar de nieuwste versie, in dit geval NumPy. Laat na het uitvoeren van de opdracht het systeem het pakket installeren totdat je de melding “Successfully installed numpy-2.0.0” ziet.
Als je liever naar een specifieke versie bijwerkt in plaats van naar de nieuwste, gebruik dan deze opdracht:
Dit toont al je geïnstalleerde pakketten/libraries met hun versies. Controleer of de numpy-library is bijgewerkt naar versie 2.0.0.
Tijdens het installeren kun je ook afhankelijkheidsmeldingen in het rood tegenkomen. Dit betekent dat er na de update mogelijke problemen in je code kunnen ontstaan. Je kunt dan per geval kijken welke onderdelen en libraries zijn getroffen.
Upgraden naar NumPy 2.0 kan tijdelijk verstorend zijn, dus zorg ervoor dat je alles goed migreert in je scripts en toekomstige pipelines.
Dit retourneert een float32-datatype in plaats van een float64-datatype, wat backward-compatibility lastig maakt. Om dit aan te pakken, raden ze het volgende aan:
Datatypen expliciet casten: gebruik de int()-, float()- of numpy_scalar.item()-scalars om je datatype expliciet op te geven.
Waarschuwingen inschakelen om wijzigingen op te sporen: gebruik waarschuwingen om via error-tracebacks naar veranderingen te zoeken.
Omgaan met namespace‑wijzigingen
Met deze 2.0-update kunnen de vele namespace-verwijderingen je code beïnvloeden. Het NumPy-team stelt deze stappen voor:
Vervang verouderde aliassen door een backward‑compatibel alternatief.
Controleer op private members die in de 2.0‑update zijn verwijderd.
Gebruik de bestaande API als je private members gebruikte.
Omgaan met ABI-breuken
Als je een Python-pakket gebruikt dat afhankelijk is van de C-API van NumPy, moet je eventuele ABI‑breuken aanpakken. De ontwikkelaars hebben specifiekadvies voor NumPy 2.0 uitgebracht voor dit soort situaties om de incompatibiliteit aan te pakken:
Ruff‑plugin om Python‑code bij te werken
Om je te helpen tijdens het migratieproces, kun je deRuff‑plugin gebruiken met een speciale Ruff‑regel, NPY201.
Ruff is op PyPI beschikbaar als ruff. Om Ruff te installeren, voer je dit in de command line in:
De release van NumPy 2.0 is de culminatie van de inspanningen van de community. Dankzij de vele NEP’s die door de community zijn voorgesteld, zijn veel langverwachte voorstellen eindelijk geïmplementeerd.
Toegewijde ontwikkelaars, onderzoekers en enthousiastelingen hebben een sleutelrol gespeeld in deze baanbrekende release, door hun expertise te delen, feedback te geven en codeverbeteringen in te dienen die NumPy 2.0 aanzienlijk hebben gevormd.
Conclusie
NumPy 2.0 is een grote stap voorwaarts voor de Python‑programmeertaal, met veel nieuwe features en verbeteringen in performance, compatibiliteit en bruikbaarheid. Als je problemen ervaart met migratie of fouten tegenkomt, kun je het beste rechtstreeks contact opnemen met het NumPy‑team.
Ik hoop dat dit artikel je heeft geholpen de belangrijkste wijzigingen in deze spannende update van NumPy te begrijpen. Voor meer verdieping, lees onze NumPy-tutorial.
Ik ben Austin, een blogger en techschrijver met jarenlange ervaring als zowel datascientist als data-analist in de gezondheidszorg. Ik begon mijn techreis met een achtergrond in biologie en help nu anderen dezelfde overstap te maken via mijn techblog. Mijn passie voor technologie heeft geleid tot schrijfbijdragen aan tientallen SaaS-bedrijven, waarmee ik anderen inspireer en mijn ervaringen deel.
Leer je data-analysevaardigheden in Python. Leer de vaardigheden van een data-analist om gegevens te bewerken, analyseren en visualiseren. Je hoeft niet te kunnen programmeren!
Naarmate data science zich ontwikkelt, zijn veranderingen in veelgebruikte libraries onvermijdelijk. Dit keer krijgt de NumPy-library een update naar versie 2.0. Deze grote update is in juni 2024 uitgebracht en brengt veel nieuwe features en verbeteringen naar de populaire Python-library.
Met zo’n grote sprong in wijzigingen zijn er onvermijdelijk punten om op te letten die kunnen vereisen dat je je bestaande code aanpast.
In dit artikel delen we een overzicht van wat NumPy 2.0 omvat, de belangrijkste veranderingen en hoe je kunt migreren naar NumPy 2.0.
Introductie tot NumPy 2.0
Gebaseerd op jaren aan feedback en technologische vooruitgang is NumPy 2.0 een ambitieuze upgrade, anders dan de vele eerdere updates van de afgelopen jaren.
In hun releaseblogpost introduceerden ze een vernieuwde API, verbeterde regels voor scalarpromotie, een nieuwe DType-API en een nieuw string-DType, compatibiliteitsverbeteringen en afstemming van API-standaarden. Door deze inspanningen zullen gebruikers significante verbeteringen in performance en documentatie merken.
Maar met zo’n grote verandering in de library brengt deze release ook wat verstoring met zich mee. Zo zijn de nieuwe API- en ABI-wijzigingen niet backward-compatible.
Grote nieuwe features
Volgens de releasenotes introduceert NumPy 2.0 ingrijpende wijzigingen. Dit zijn de belangrijkste:
API- en ABI-wijzigingen
In deze update zijn verschillende opschoonwijzigingen doorgevoerd in de API en ABI (Application Binary Interface).
Met de nieuwe update, zoals beschreven in NEP (NumPy Enhancement Proposal) 52, laat NumPy zijn gebruikelijke nadruk op backward-compatibility deels los om een gestroomlijndere, schonere en eenvoudigere API te bieden.
Enkele opvallende wijzigingen:
Voor de ABI-wijzigingen zal er sprake zijn van breuk in de nieuwe release. Dit beïnvloedt binaries van pakketten die de NumPy C-API gebruiken.
Alles wat gebouwd is tegen een eerdere NumPy 1.xx-release werkt niet met NumPy 2.0. Verderop deel ik hoe je volgens hun aanbevelingen kunt migreren. Je krijgt een ImportError‑melding, wat duidt op binaire incompatibiliteit.
Nieuwe DType-API en StringDType
Zoals voorgesteld in NEP 41, introduceert deze 2.0-update een nieuwe API voor het implementeren van door de gebruiker gedefinieerde, aangepaste datatypen met het
StringDType-datatype. Deze nieuwe API biedt native ondersteuning voor variabele‑lengte stringdatatypen, waar NumPy‑gebruikers al lang om vragen.Regels voor scalarpromotie
Aanvankelijk voorgesteld in NEP 50 zijn de scalarpromotieregels in NumPy ook bijgewerkt om verrassingen voor gebruikers te voorkomen. Voorheen hing promotie vaak af van de datawaarden van invoerarrays in plaats van alleen hun DTypes, wat verwarrend kan zijn.
Voor de nieuwe promotiepaden, zie de afbeelding hieronder:
Bron: NumPy DType-precisie en -promotie
Prestatieverbeteringen
Deze release brengt ook enkele prestatieverbeteringen.
Dit zijn enkele belangrijke verbeterpunten:
Windows-compatibiliteit
Om Windows-gebruikers beter te bedienen, heeft het NumPy-team in deze release ook verschillende compatibiliteitsproblemen opgelost.
Zo is het standaard integertype op Windows gewijzigd naar
int64in plaats vanint32, om het standaardgedrag op andere OS‑platformen te matchen.Verbeterde documentatie en bruikbaarheid
Er is meer documentatie toegevoegd aan NumPy’s moduulstructuur en de navigatie in de referentiegids is verbeterd. De documentatie over bouwen vanaf bron is ook volledig herschreven.
Hoe migreer je naar NumPy 2.0
Updaten naar NumPy 2.0
Om met deze nieuwe versie van NumPy aan de slag te gaan, moet je eerst upgraden van je huidige versie naar de nieuwste.
Gebruik daarvoor simpelweg de upgrade-optie in deze opdracht:
Of gebruik deze:
De upgrade-optie werkt gespecificeerde pakketten bij naar de nieuwste versie, in dit geval NumPy. Laat na het uitvoeren van de opdracht het systeem het pakket installeren totdat je de melding “Successfully installed numpy-2.0.0” ziet.
Als je liever naar een specifieke versie bijwerkt in plaats van naar de nieuwste, gebruik dan deze opdracht:
Dit zorgt ervoor dat je de juiste versie installeert, in dit geval 2.0.0.
Voor een extra controle voer je deze opdracht uit:
Dit toont al je geïnstalleerde pakketten/libraries met hun versies. Controleer of de
numpy-library is bijgewerkt naar versie 2.0.0.Tijdens het installeren kun je ook afhankelijkheidsmeldingen in het rood tegenkomen. Dit betekent dat er na de update mogelijke problemen in je code kunnen ontstaan. Je kunt dan per geval kijken welke onderdelen en libraries zijn getroffen.
Upgraden naar NumPy 2.0 kan tijdelijk verstorend zijn, dus zorg ervoor dat je alles goed migreert in je scripts en toekomstige pipelines.
Voor een volledige gids, zie de officiële NumPy 2.0 Migration Guide van de ontwikkelaars.
Dit zijn de belangrijkste aandachtspunten bij het migreren:
Omgaan met wijzigingen in NumPy-datatypromotie
Voor een volledige gids over de verschillende gedragsveranderingen en verwachte datatypewijzigingen, raadpleeg deze tabel in NEP 50.
Het grootste probleem voor backward-compatibility is de precisie van je scalars.
Bijvoorbeeld, wanneer zo’n bewerking wordt uitgevoerd:
Dit retourneert een float32-datatype in plaats van een float64-datatype, wat backward-compatibility lastig maakt. Om dit aan te pakken, raden ze het volgende aan:
Datatypen expliciet casten: gebruik de
int()-,float()- ofnumpy_scalar.item()-scalars om je datatype expliciet op te geven.Waarschuwingen inschakelen om wijzigingen op te sporen: gebruik waarschuwingen om via error-tracebacks naar veranderingen te zoeken.
Omgaan met namespace‑wijzigingen
Met deze 2.0-update kunnen de vele namespace-verwijderingen je code beïnvloeden. Het NumPy-team stelt deze stappen voor:
Omgaan met ABI-breuken
Als je een Python-pakket gebruikt dat afhankelijk is van de C-API van NumPy, moet je eventuele ABI‑breuken aanpakken. De ontwikkelaars hebben specifiek advies voor NumPy 2.0 uitgebracht voor dit soort situaties om de incompatibiliteit aan te pakken:
Ruff‑plugin om Python‑code bij te werken
Om je te helpen tijdens het migratieproces, kun je de Ruff‑plugin gebruiken met een speciale Ruff‑regel, NPY201.
Ruff is op PyPI beschikbaar als ruff. Om Ruff te installeren, voer je dit in de command line in:
Voor meer details, zie de volledige installatiehandleiding van Ruff.
Zorg dat je de
NP201regel opgeeft in jepyproject.toml:Je kunt de NPY201‑regel ook via de command line opgeven:
Bijdragen uit de community
De release van NumPy 2.0 is de culminatie van de inspanningen van de community. Dankzij de vele NEP’s die door de community zijn voorgesteld, zijn veel langverwachte voorstellen eindelijk geïmplementeerd.
Toegewijde ontwikkelaars, onderzoekers en enthousiastelingen hebben een sleutelrol gespeeld in deze baanbrekende release, door hun expertise te delen, feedback te geven en codeverbeteringen in te dienen die NumPy 2.0 aanzienlijk hebben gevormd.
Conclusie
NumPy 2.0 is een grote stap voorwaarts voor de Python‑programmeertaal, met veel nieuwe features en verbeteringen in performance, compatibiliteit en bruikbaarheid. Als je problemen ervaart met migratie of fouten tegenkomt, kun je het beste rechtstreeks contact opnemen met het NumPy‑team.
Ik hoop dat dit artikel je heeft geholpen de belangrijkste wijzigingen in deze spannende update van NumPy te begrijpen. Voor meer verdieping, lees onze NumPy-tutorial.
Ben je nieuw met NumPy en wil je meer ontdekken? Probeer onze Introduction to NumPy‑cursus of bekijk deze live code-along training voor NumPy.