{"id":3857,"date":"2024-06-24T19:21:43","date_gmt":"2024-06-24T16:21:43","guid":{"rendered":"https:\/\/webanalyst.ro\/?p=3857"},"modified":"2024-06-24T19:21:44","modified_gmt":"2024-06-24T16:21:44","slug":"python-numpy-2","status":"publish","type":"post","link":"https:\/\/webanalyst.ro\/blog\/2024\/python-numpy-2\/","title":{"rendered":"NumPy 2.0.0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">NumPy este cel mai popular pachet pentru Python. Acesta se ocup\u0103 de calcule numerice, inclusiv pentru serii, matrice \u0219i vectori multidimensionali. Include func\u021bii matematice, inclusiv algebr\u0103 liniar\u0103, transform\u0103ri sau gener\u0103ri aleatorii de numere. De altfel, numele s\u0103u vine de la <strong>Numerical Python<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"632\" src=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries-1200x632.png\" alt=\"\" class=\"wp-image-3860\" srcset=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries-1200x632.png 1200w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries-300x158.png 300w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries-150x79.png 150w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries-768x404.png 768w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-libraries.png 1225w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen data science, NumPy este unul dintre principalele pachete utilizate \u0219i a servit, \u00een timp, la crearea altor pachete populare \u00een zona de date, precum <strong>pandas<\/strong> sau <strong>Matplotlib<\/strong>. La finalul articolului, am inclus \u0219i un grafic cu cele mai populare pachete Python \u00een analiza datelor, \u00een func\u021bie de apari\u021bia pe GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00cen urm\u0103 cu un an scriam c\u0103 <a href=\"https:\/\/webanalyst.ro\/blog\/2023\/pandas-2-0-0\/\" target=\"_blank\" rel=\"noreferrer noopener\">pandas a ajuns la versiunea 2.0.0<\/a>, moment din care pandas nu s-a mai bazat pe NumPy. <strong>Zilele trecute, a ap\u0103rut \u0219i versiunea 2.0.0 din NumPy.<\/strong> La fel ca \u0219i \u00een cazul pandas, \u0219i pentru NumPy aceasta este cea mai mare actualizare de la apari\u021bia sa, despre care voi detalia \u00een acest articol.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Istoria NumPy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NumPy 1.0 a ap\u0103rut \u00een urm\u0103 cu 18 ani. De-a lungul acestei perioade, a fost actualizat pentru a aduce o performan\u0103 mai bun\u0103. \u00cen general, au fost actualiz\u0103ri incrementale, adic\u0103 vechiul cod s\u0103 func\u021bioneze corect \u0219i \u00een continuare. Pe de alt\u0103 parte, acest lucru minimizeaz\u0103 scopul optimiz\u0103rilor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lucrurile se schimb\u0103 odat\u0103 cu apari\u021bia versiunii 2.0, care vine cu schimb\u0103ri majore \u00een sistemul NumPy. S-a renun\u021bat inclusiv la cod foarte vechi de tip ABI (Application Binary Interface) din cauza c\u0103ruia nu puteau fi f\u0103cute anumite \u00eembun\u0103t\u0103\u021biri.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">NumPy 2.0 vine cu schimb\u0103ri majore, iar unele dintre acestea au fost \u00een lucru \u00eenc\u0103 din 2019! \u00cen aprilie 2023, dezvoltatorii au ajuns la un acord comun privind majoritatea schimb\u0103rilor care vor ap\u0103rea \u00een versiunea 2 din NumPy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schimb\u0103ri majore \u00een NumPy 2.0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Iat\u0103 c\u00e2teva schimb\u0103ri aduse \u00een noua versiune, pe care cei care le-au dezvoltat le consider\u0103 cele mai importante:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modific\u0103ri importante la Python API, acesta trec\u00e2nd printr-o cur\u0103\u021bare masiva, ceea ce spun ei c\u0103 va face NumPy mai u\u0219or de \u00eenv\u0103\u021bat \u0219i de folosit.<\/li>\n\n\n\n<li>Regulile de programare scalar\u0103 au fost actualizate. Acestea determin\u0103 cum sunt combinate diferite tipuri de date atunci c\u00e2nd face opera\u021bii cu scalari. Au fost introduse \u0219i opera\u021bii care pot implica matricele zero-dimensionale.<\/li>\n\n\n\n<li>A fost introdus un nou DType API \u0219i un nou <code>dtype<\/code>, care vine de la \u201edata type\u201d \u0219i se refer\u0103 la tipul de date al elementelor \u00een biblioteca NumPy. A fost implementat \u0219i <code>StringDType<\/code>, care ofer\u0103 suport \u0219i pentru tipurile de date care nu au o lungime previzibil\u0103 (<em>variable-width<\/em>).<\/li>\n\n\n\n<li>O nou\u0103 compatibilitate pentru sistemul de operare Windows, unde reprezentarea cifrelor \u00een sistemul 32-bit s-a actualizat la arhitectura de 64-bit.<\/li>\n\n\n\n<li>Suport pentru standardul Python array API, care este o specifica\u021bie comun\u0103 pentru librariile de matrice \u0219i tensori. Scopul s\u0103u este s\u0103 ofere un set coerent de API-uri, indiferent de biblioteca folosit\u0103.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Performan\u021ba NumPy 2.0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A\u0219a cum era de a\u0219teptat, NumPy 2.0 vine \u0219i cu \u00eembun\u0103t\u0103\u021biri majore de performan\u021b\u0103. Iat\u0103-le pe cele mai importante dintre acestea:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Func\u021biile de sortare (<code>sort<\/code>, <code>argsort<\/code>, <code>partition<\/code>, <code>argpartition<\/code>) sunt de acum accelerate pentru cei care folosesc Intel x86-simd-sort, o bibliotec\u0103 C++ pentru rutine de sortare bazate pe SIMD (<em>Single Instruction, Multiple Data<\/em>).<\/li>\n\n\n\n<li>Pentru cei care folosesc macOS, versiunea 14 mai sau nou\u0103, va fi folosit <em>Accelerate support<\/em>.<\/li>\n\n\n\n<li>Opera\u021biile <code>numpy.char<\/code> pentru datele cu lungile fix\u0103 (<em>fixed-length<\/em>) vor fi mai rapide.<\/li>\n\n\n\n<li>Apare un nou API, numit <code>opt_func_info<\/code> care va ajuta s\u0103 determine nucleele specifice hardware-ului, pentru ca apoi s\u0103 le utilizeze.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1092\" height=\"326\" src=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-data-science-libraries.png\" alt=\"\" class=\"wp-image-3865\" srcset=\"https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-data-science-libraries.png 1092w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-data-science-libraries-300x90.png 300w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-data-science-libraries-150x45.png 150w, https:\/\/webanalyst.ro\/blog\/wp-content\/uploads\/2024\/06\/python-data-science-libraries-768x229.png 768w\" sizes=\"auto, (max-width: 1092px) 100vw, 1092px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reamintesc c\u0103 actualizarea NumPy la ultima versiune ar putea face codul mai vechi impracticabil. A\u0219adar, este nevoie de teste sau de folosirea de versiuni diferite pentru o perioad\u0103.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De asemenea, dac\u0103 folosi\u021bi un fi\u0219ier de tipul <code>requirements.txt<\/code>, cu toate libr\u0103riile \u0219i versiunile utilizate, nu uita\u021bi s\u0103 face\u021bi un update \u0219i aici.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NumPy este cel mai popular pachet pentru Python. Acesta se ocup\u0103 de calcule numerice, inclusiv pentru serii, matrice \u0219i vectori multidimensionali. Include func\u021bii matematice, inclusiv algebr\u0103 liniar\u0103, transform\u0103ri sau gener\u0103ri aleatorii de numere. De altfel, numele s\u0103u vine de la Numerical Python. \u00cen data science, NumPy este unul dintre principalele pachete utilizate \u0219i a servit, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3858,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12],"tags":[946],"class_list":["post-3857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noutati","category-technical","tag-python"],"_links":{"self":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/3857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/comments?post=3857"}],"version-history":[{"count":7,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/3857\/revisions"}],"predecessor-version":[{"id":3867,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/posts\/3857\/revisions\/3867"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media\/3858"}],"wp:attachment":[{"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/media?parent=3857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/categories?post=3857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webanalyst.ro\/blog\/wp-json\/wp\/v2\/tags?post=3857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}