Tính năng mới
- Bổ sung dtype chuỗi độ dài biến thiên mới,
StringDType, và namespace numpy.strings cho các thao tác chuỗi.
- Hỗ trợ
float32 và longdouble trong tất cả các hàm numpy.fft.
- Hỗ trợ tiêu chuẩn Array API trong namespace
numpy chính.
Cải thiện hiệu năng
- Các hàm sắp xếp (
sort, argsort, partition, argpartition) được tăng tốc bằng thư viện Intel x86-simd-sort và Google Highway.
- Hỗ trợ macOS Accelerate và cung cấp binary wheel cho macOS >=14, giúp cải thiện đáng kể hiệu năng các phép toán đại số tuyến tính.
- Các thao tác chuỗi độ dài cố định của
numpy.char được tăng tốc.
- Bổ sung API truy vết và kiểm tra mới,
opt_func_info, để kiểm tra và sử dụng các kernel theo từng phần cứng.
Cải thiện Python API
- Phân tách rõ ràng giữa API công khai và không công khai, cùng cấu trúc mô-đun mới.
- Loại bỏ nhiều hàm và bí danh đã bị phản đối sử dụng, giúp việc học và sử dụng dễ hơn.
- Bổ sung tên dtype tiêu chuẩn và hàm kiểm tra
isdtype mới.
Cải thiện C API
- Bổ sung C API công khai mới để tạo dtype tùy biến do người dùng định nghĩa.
- Loại bỏ các hàm và macro cũ, đồng thời ẩn các phần nội bộ không công khai.
- Các hàm khởi tạo mới:
PyArray_ImportNumPyAPI và PyUFunc_ImportUFuncAPI.
Hành vi được cải thiện
- Áp dụng NEP 50 để cải thiện hành vi nâng cấp kiểu, khiến nó chỉ phụ thuộc vào dtype thay vì giá trị dữ liệu của mảng đầu vào.
- Trên Windows, kiểu số nguyên mặc định được đổi từ
int32 sang int64.
- Số chiều mảng tối đa tăng từ 32 lên 64.
Tài liệu
- Khả năng điều hướng trong hướng dẫn tham chiếu được cải thiện đáng kể.
- Tài liệu build từ mã nguồn đã được viết lại hoàn toàn.
Các mục bị loại bỏ khỏi Python API
- Loại bỏ
np.geterrobj, np.seterrobj và đối số từ khóa ufunc liên quan extobj=.
- Loại bỏ
np.cast, thay bằng np.asarray(arg, dtype=dtype).
- Loại bỏ
np.source, thay bằng inspect.getsource.
- Loại bỏ
np.lookfor.
- Loại bỏ
numpy.who, khuyến nghị dùng trình khám phá biến của các IDE như Spyder hoặc Jupyter Notebook.
- Loại bỏ nhiều hàm và bí danh đã bị phản đối sử dụng.
Ý kiến của GN⁺
- Cải thiện hiệu năng: Với thuật toán sắp xếp mới và hỗ trợ macOS Accelerate, tốc độ xử lý dữ liệu được kỳ vọng sẽ tăng đáng kể.
- Dọn dẹp API: Việc loại bỏ các hàm và bí danh đã bị phản đối sử dụng khiến NumPy trở nên trực quan và gọn gàng hơn.
- Nâng cấp kiểu: Việc áp dụng NEP 50 giúp hành vi nâng cấp kiểu dễ dự đoán hơn. Điều này sẽ giúp giảm các kết quả bất ngờ trong các phép toán dtype hỗn hợp.
- Cải thiện tài liệu: Những cải tiến ở hướng dẫn tham chiếu và tài liệu build giúp các nhà phát triển dễ hiểu và sử dụng NumPy hơn.
- Vấn đề tương thích: Do có nhiều thay đổi API, mã hiện có có thể không còn tương thích. Cần tham khảo hướng dẫn migration để cập nhật mã.
2 bình luận
Chắc sẽ có khá nhiều gói bị xung đột nhỉ..
Ý kiến Hacker News
Cách kết hợp các phép toán phức tạp: Cần một cách đơn giản hơn và dễ nhớ hơn để xây dựng các phép toán không theo từng phần tử. Có quá nhiều cách khác nhau nên lần nào cũng phải học lại.
Thay đổi kiểu số nguyên mặc định trên Windows: Trên Windows, kiểu số nguyên mặc định đã được बदल từ int32 sang int64. Điều này tốt vì giờ đã thống nhất với các nền tảng khác.
Cập nhật lớn của Numpy: Với những người không thường xuyên trực tiếp dùng Numpy, có thể sẽ không có thay đổi lớn. Chủ yếu họ dùng pandas và scipy, và chỉ dùng các thuật toán của Numpy khi cần.
Chu kỳ cập nhật: Mỗi khi có bản cập nhật lớn, họ thường không nâng cấp ngay mà chờ đến khi có phiên bản ổn định hơn.
Quản lý phiên bản: Với bản phát hành lớn đầu tiên có thay đổi đáng kể sau 18 năm, có vẻ sẽ tốt hơn nếu tách ra thành một phiên bản mới. Cài bằng
pip install numpy2để không phải lo về khả năng tương thích với các thư viện khác.Vấn đề tương thích gói: Một số gói không được cố định ở phiên bản 1.x nên đang gây ra vấn đề. Có thể tạm thời xử lý bằng
pip install numpy==1.*.Liên kết ghi chú phát hành: Cung cấp liên kết đến ghi chú phát hành của Numpy 2.0.0. Ghi chú phát hành Numpy 2.0.0