1 คะแนน โดย GN⁺ 2024-06-17 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

ฟีเจอร์ใหม่

  • เพิ่ม 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 ความคิดเห็น

 
eususu 2024-06-18

คงมีแพ็กเกจที่ชนกันอยู่เยอะแน่เลย..

 
GN⁺ 2024-06-17
ความคิดเห็นจาก 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