Διατίθεται μια έκδοση της βιβλιοθήκης Python για επιστημονικούς υπολογισμούς NumPy 2.0.0, η οποία επικεντρώνεται στην εργασία με πολυδιάστατους πίνακες και πίνακες και παρέχει επίσης μια μεγάλη συλλογή συναρτήσεων με την υλοποίηση διαφόρων αλγορίθμων που σχετίζονται με τη χρήση πινάκων. Η NumPy είναι μια από τις πιο δημοφιλείς βιβλιοθήκες που χρησιμοποιείται για επιστημονικούς υπολογισμούς. Ο κώδικας του έργου είναι γραμμένος σε Python χρησιμοποιώντας βελτιστοποιήσεις σε C και διανέμεται με την άδεια BSD.
Το NumPy 2.0.0 σηματοδοτεί την πρώτη σημαντική κυκλοφορία από το 2006.
Εκτός από τις νέες δυνατότητες και τις βελτιστοποιήσεις απόδοσης, η νέα έκδοση περιλαμβάνει αλλαγές στο ABI, στο Python API και στο C-API που διασπούν τη συμβατότητα προς τα πίσω. Για παράδειγμα, η βιβλιοθήκη SciPy που έχει μεταγλωττιστεί με το NumPy 1.x θα απαιτήσει εκ νέου μεταγλώττιση για να λειτουργήσει με το NumPy 2.0. Σε ορισμένες περιπτώσεις, ενδέχεται να απαιτούνται αλλαγές κώδικα για τη χρήση του NumPy 2.0 σε εφαρμογές.
Το πιο σημαντικό σφάλμα σχετίζεται με τη διατήρηση της ακρίβειας των βαθμωτών εκφράσεων, για παράδειγμα, η συνάρτηση "np.float32(3) + 3" θα επιστρέφει πλέον μια τιμή τύπου float32, όχι float64, και σε εκφράσεις με πολλαπλούς τύπους, ο τύπος με την υψηλότερη ακρίβεια θα χρησιμοποιείται για το αποτέλεσμα, δηλαδή η συνάρτηση "np.array([3], dtype=np.float32) + np.float64(3)" θα επιστρέφει μια τιμή τύπου float64. Οι προεπιλεγμένοι τύποι ακεραίων που χρησιμοποιούνται στην πλατφόρμα έχουν αλλάξει. Windows — σε συστήματα 64-bit, χρησιμοποιείται πλέον ένας ακέραιος τύπος 64-bit και σε συστήματα 32-bit, ένας τύπος 32-bit (προηγουμένως, χρησιμοποιούνταν ο αναλογικός τύπος C long, αλλά τώρα το ισοδύναμο np.intp).
Ορισμένοι ορισμοί στο C-API έχουν αντικατασταθεί ή καταργηθεί, για παράδειγμα, η δομή PyArray_Descr έχει αλλάξει. Ο μέγιστος αριθμός διαστάσεων και ορισμάτων που ορίζονται μέσω των μακροεντολών NPY_MAXDIMS και NPY_MAXARGS έχει αυξηθεί σε 64. Όλοι οι σύνθετοι τύποι έχουν αλλάξει στη χρήση τυπικών τύπων από την προδιαγραφή C99 (cfloat_t, cdouble_t, clongdouble_t). Προστέθηκε νέο C API για τη δημιουργία προσαρμοσμένων τύπων d. Έχουν προταθεί νέες απλοποιημένες συναρτήσεις αρχικοποίησης PyArray_ImportNumPyAPI και PyUFunc_ImportUFuncAPI.
Το Python API παρέχει έναν πιο σαφή διαχωρισμό μεταξύ δημόσιων και ιδιωτικών API και εισάγει μια νέα δομή λειτουργικών μονάδων. Περίπου 100 συναρτήσεις, λειτουργικές μονάδες και σταθερές έχουν μετακινηθεί από τον κύριο χώρο ονομάτων "np", έχουν καταργηθεί ή καταργηθεί.
Εκκαθάριση του χώρου ονομάτων np.lib. Ο αριθμός των αντικειμένων στον κύριο χώρο ονομάτων έχει μειωθεί κατά 10%, και στον χώρο ονομάτων numpy.lib κατά 80%. Ο χώρος ονομάτων numpy.core έχει μετακινηθεί σε ιδιωτικό. Καταργήθηκαν ορισμένες μέθοδοι από τις κλάσεις np.ndarray και np.generic. Δημιούργησε έναν νέο χώρο ονομάτων numpy.stringsf με λειτουργίες συμβολοσειράς.
Οι νέες δυνατότητες περιλαμβάνουν υποστήριξη για τύπους float32 και longdouble σε όλες τις συναρτήσεις numpy.fft, υποστήριξη για το τυπικό API Array στον κύριο χώρο ονομάτων, νέο χώρο ονομάτων και τύπους συμβολοσειρών μεταβλητού μήκους. Η βελτιστοποίηση απόδοσης πραγματοποιήθηκε με τη χρήση των βιβλιοθηκών Intel x86-simd-sort και Google Highway για τις λειτουργίες string sort, argsort, partition και argpartition, ενώ οι λειτουργίες με σταθερές συμβολοσειρές στη μονάδα numpy.char έχουν επιταχυνθεί. Προστέθηκε νέο API
opt_func_info για ανίχνευση και ενδοσκόπηση.
Πηγή: opennet.ru
