ฟีเจอร์ใหม่
- เพิ่ม dtype สตริงความยาวแปรผันแบบใหม่
StringDType และเนมสเปซ numpy.strings สำหรับการจัดการสตริง
- รองรับ
float32 และ longdouble ในทุกฟังก์ชันของ numpy.fft
- รองรับมาตรฐาน Array API ในเนมสเปซหลัก
numpy
การปรับปรุงประสิทธิภาพ
- ฟังก์ชันจัดเรียง (
sort, argsort, partition, argpartition) ถูกเร่งความเร็วด้วยไลบรารี Intel x86-simd-sort และ Google Highway
- รองรับ macOS Accelerate และมีไบนารี wheel สำหรับ macOS >=14 ช่วยเพิ่มประสิทธิภาพของการคำนวณพีชคณิตเชิงเส้นอย่างมาก
- การจัดการสตริงความยาวคงที่ใน
numpy.char เร็วขึ้น
- เพิ่ม API สำหรับการติดตามและตรวจสอบใหม่
opt_func_info ที่สามารถตรวจสอบและใช้งานเคอร์เนลเฉพาะฮาร์ดแวร์ได้
การปรับปรุง Python API
- แยก public API และ non-public API อย่างชัดเจน พร้อมโครงสร้างโมดูลใหม่
- ลบฟังก์ชันและ alias ที่เลิกใช้จำนวนมาก ทำให้เรียนรู้และใช้งานได้ง่ายขึ้น
- เพิ่มชื่อ dtype มาตรฐานและฟังก์ชันตรวจสอบใหม่
isdtype
การปรับปรุง C API
- เพิ่ม public C API ใหม่สำหรับสร้าง dtype แบบกำหนดเอง
- ลบฟังก์ชันและแมโครเก่า พร้อมซ่อน internal ที่ไม่ใช่ public
- ฟังก์ชันเริ่มต้นใหม่:
PyArray_ImportNumPyAPI และ PyUFunc_ImportUFuncAPI
พฤติกรรมที่ปรับปรุงแล้ว
- นำ NEP 50 มาใช้เพื่อปรับปรุงพฤติกรรมการเลื่อนระดับชนิดข้อมูล ทำให้ขึ้นอยู่กับ dtype เท่านั้น ไม่ใช่ค่าข้อมูลของอาร์เรย์อินพุต
- ชนิดจำนวนเต็มเริ่มต้นบน Windows เปลี่ยนจาก
int32 เป็น int64
- จำนวนมิติสูงสุดของอาร์เรย์เพิ่มจาก 32 เป็น 64
เอกสารประกอบ
- การนำทางในคู่มืออ้างอิงได้รับการปรับปรุงอย่างมาก
- เอกสารการ build จากซอร์สถูกเขียนใหม่ทั้งหมด
รายการที่ถูกลบออกจาก Python API
- ลบ
np.geterrobj, np.seterrobj และอาร์กิวเมนต์คีย์เวิร์ดของ ufunc ที่เกี่ยวข้อง extobj=
- ลบ
np.cast และแทนที่ด้วย np.asarray(arg, dtype=dtype)
- ลบ
np.source และแทนที่ด้วย inspect.getsource
- ลบ
np.lookfor
- ลบ
numpy.who โดยแนะนำให้ใช้ตัวสำรวจตัวแปรของ IDE เช่น Spyder หรือ Jupyter Notebook
- ลบฟังก์ชันและ alias ที่เลิกใช้หลายรายการ
ความเห็นของ GN⁺
- ประสิทธิภาพที่ดีขึ้น: คาดว่าความเร็วในการประมวลผลข้อมูลจะดีขึ้นอย่างมากจากอัลกอริทึมการจัดเรียงใหม่และการรองรับ macOS Accelerate
- การจัดระเบียบ API: การลบฟังก์ชันและ alias ที่เลิกใช้ทำให้การใช้งาน NumPy ตรงไปตรงมาและกระชับยิ่งขึ้น
- การเลื่อนระดับชนิดข้อมูล: การนำ NEP 50 มาใช้ทำให้พฤติกรรมการเลื่อนระดับชนิดข้อมูลคาดเดาได้มากขึ้น ซึ่งจะช่วยลดผลลัพธ์ที่ไม่คาดคิดในการคำนวณกับ dtype แบบผสม
- การปรับปรุงเอกสาร: การปรับปรุงคู่มืออ้างอิงและเอกสารการ build ช่วยให้นักพัฒนาเข้าใจและใช้งาน NumPy ได้ง่ายขึ้น
- ปัญหาความเข้ากันได้: เนื่องจากมีการเปลี่ยนแปลง API จำนวนมาก โค้ดเดิมอาจไม่เข้ากัน จึงจำเป็นต้องอัปเดตโค้ดโดยอ้างอิงคู่มือการย้ายระบบ
2 ความคิดเห็น
คงมีแพ็กเกจที่ชนกันอยู่เยอะแน่เลย..
ความคิดเห็นจาก Hacker News
วิธีจัดองค์ประกอบการคำนวณที่ซับซ้อน: จำเป็นต้องมีวิธีที่ง่ายกว่าและจำได้ง่ายกว่าสำหรับการประกอบการคำนวณที่ไม่ใช่แบบ element-wise มีวิธีอยู่มากเกินไปจนต้องกลับมาเรียนรู้ใหม่ทุกครั้ง
การเปลี่ยนชนิดจำนวนเต็มเริ่มต้นบน Windows: ชนิดจำนวนเต็มเริ่มต้นบน Windows เปลี่ยนจาก int32 เป็น int64 ซึ่งถือว่าดีเพราะสอดคล้องกับแพลตฟอร์มอื่น
อัปเดตหลักของ Numpy: สำหรับผู้ใช้ที่ไม่ได้ใช้ Numpy โดยตรงบ่อยนัก อาจไม่มีการเปลี่ยนแปลงใหญ่ ส่วนใหญ่ใช้ pandas และ scipy และจะใช้เฉพาะอัลกอริทึมของ Numpy เมื่อจำเป็น
รอบการอัปเดต: เมื่อมีอัปเดตใหญ่ ก็มักจะไม่รีบอัปเกรดทันที แต่จะรอจนกว่าจะมีเวอร์ชันที่เสถียรก่อน
การจัดการเวอร์ชัน: เมเจอร์รีลีสแรกที่มีการเปลี่ยนแปลงใหญ่ในรอบ 18 ปี ดูเหมือนว่าการแยกเป็นเวอร์ชันใหม่ไปเลยจะดีกว่า ติดตั้งด้วย
pip install numpy2และไม่ต้องกังวลเรื่องความเข้ากันได้กับไลบรารีอื่นปัญหาความเข้ากันได้ของแพ็กเกจ: บางแพ็กเกจไม่ได้ตรึงไว้ที่เวอร์ชัน 1.x จึงทำให้เกิดปัญหา แก้ชั่วคราวได้ด้วย
pip install numpy==1.*ลิงก์บันทึกประจำรุ่น: มีการแชร์ลิงก์บันทึกประจำรุ่นของ Numpy 2.0.0 บันทึกประจำรุ่นของ Numpy 2.0.0