SciPy Tutorial: Python SciPy คืออะไรและจะใช้งานอย่างไร?



SciPy เป็นไลบรารี Python ที่ใช้แก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์ NumPy กับ SciPy Basic, Special, Integration, Optimization ฯลฯ พร้อมตัวอย่าง

คณิตศาสตร์เกี่ยวข้องกับแนวคิดจำนวนมากที่มีความสำคัญมาก แต่ในขณะเดียวกันก็ซับซ้อนและใช้เวลานาน อย่างไรก็ตาม มีไลบรารี SciPy เต็มรูปแบบที่ช่วยแก้ปัญหานี้ให้เรา ในบทช่วยสอน SciPy นี้คุณจะได้เรียนรู้วิธีใช้ประโยชน์จากไลบรารีนี้พร้อมกับฟังก์ชันบางอย่างและตัวอย่าง

ก่อนดำเนินการต่อโปรดดูหัวข้อทั้งหมดที่กล่าวถึงในบทความนี้:





มาเริ่มกันเลย :)

SciPy คืออะไร?

SciPy เป็นไลบรารี Python แบบโอเพ่นซอร์สซึ่งใช้เพื่อแก้ปัญหาทางวิทยาศาสตร์และคณิตศาสตร์ มันถูกสร้างขึ้นบน ขยายและอนุญาตให้ผู้ใช้จัดการและแสดงภาพข้อมูลด้วยคำสั่งระดับสูงที่หลากหลาย ดังที่ได้กล่าวไว้ก่อนหน้านี้ SciPy สร้างบน NumPy ดังนั้นหากคุณนำเข้า SciPy ไม่จำเป็นต้องนำเข้า NumPy



NumPy กับ SciPy

ทั้ง NumPy และ SciPy คือ ใช้สำหรับการวิเคราะห์ทางคณิตศาสตร์และตัวเลขที่ใช้ NumPy มีข้อมูลอาร์เรย์และการดำเนินการพื้นฐานเช่นการเรียงลำดับการสร้างดัชนี ฯลฯ ในขณะที่ SciPy ประกอบด้วยรหัสตัวเลขทั้งหมด แม้ว่า NumPy จะมีไฟล์ ที่สามารถช่วยแก้ไขพีชคณิตเชิงเส้นการแปลงฟูริเยร์ ฯลฯ SciPy เป็นไลบรารีที่มีฟังก์ชันเหล่านี้ในเวอร์ชันที่มีคุณสมบัติครบถ้วนพร้อมกับฟังก์ชันอื่น ๆ อีกมากมาย อย่างไรก็ตามหากคุณทำการวิเคราะห์ทางวิทยาศาสตร์โดยใช้ Python คุณจะต้องติดตั้งทั้ง NumPy และ SciPy เนื่องจาก SciPy สร้างบน NumPy

แพ็คเกจย่อยใน SciPy:

SciPy มีแพ็กเกจย่อยสำหรับการคำนวณทางวิทยาศาสตร์หลายแบบซึ่งแสดงไว้ในตารางต่อไปนี้:

ชื่อคำอธิบาย
คลัสเตอร์อัลกอริทึมการทำคลัสเตอร์
ค่าคงที่ค่าคงที่ทางกายภาพและทางคณิตศาสตร์
fftpackกิจวัตรการแปลงฟูเรียร์อย่างรวดเร็ว
บูรณาการการหาปริพันธ์และตัวแก้สมการเชิงอนุพันธ์สามัญ
สอดแทรกการแก้ไขและการทำให้เสี้ยนเรียบ
ผมอินพุตและเอาต์พุต
linalgพีชคณิตเชิงเส้น
ฉันบินการประมวลผลภาพ N มิติ
แปลกการถดถอยระยะห่างมุมฉาก
เพิ่มประสิทธิภาพขั้นตอนการเพิ่มประสิทธิภาพและการค้นหารูท
สัญญาณการประมวลผลสัญญาณ
เบาบางเมทริกซ์แบบเบาบางและกิจวัตรที่เกี่ยวข้อง
เชิงพื้นที่โครงสร้างข้อมูลเชิงพื้นที่และอัลกอริทึม
พิเศษฟังก์ชั่นพิเศษ
สถิติการแจกแจงและฟังก์ชันทางสถิติ

อย่างไรก็ตามสำหรับคำอธิบายโดยละเอียดคุณสามารถทำตามไฟล์ เอกสารอย่างเป็นทางการ .



แพ็คเกจเหล่านี้จำเป็นต้องนำเข้าโดยเฉพาะก่อนใช้งาน ตัวอย่างเช่น:

จากคลัสเตอร์นำเข้า scipy

ก่อนที่จะดูรายละเอียดของฟังก์ชันเหล่านี้ก่อนอื่นเรามาดูฟังก์ชันที่พบได้ทั่วไปทั้งใน NumPy และ SciPy

ฟังก์ชั่นพื้นฐาน:

การโต้ตอบกับ NumPy:

SciPy สร้างบน NumPy ดังนั้นคุณสามารถใช้ฟังก์ชัน NumPy เพื่อจัดการอาร์เรย์ได้ หากต้องการทราบข้อมูลเชิงลึกเกี่ยวกับฟังก์ชันเหล่านี้คุณสามารถใช้ฟังก์ชัน help (), info () หรือ source () ได้

ช่วยด้วย():

หากต้องการรับข้อมูลเกี่ยวกับฟังก์ชันใด ๆ คุณสามารถใช้ไฟล์ ช่วยด้วย() ฟังก์ชัน มีสองวิธีในการใช้ฟังก์ชันนี้:

  • ไม่มีพารามิเตอร์ใด ๆ
  • โดยใช้พารามิเตอร์

นี่คือตัวอย่างที่แสดงทั้งสองวิธีข้างต้น:

จาก scipy import cluster help (คลัสเตอร์) # ด้วยพารามิเตอร์ help () # ไม่มีพารามิเตอร์

เมื่อคุณรันโค้ดด้านบนวิธีใช้แรก () จะแสดงข้อมูลเกี่ยวกับไฟล์ คลัสเตอร์ โมดูลย่อย ความช่วยเหลือที่สอง () ขอให้ผู้ใช้ป้อนชื่อของโมดูลคำสำคัญและอื่น ๆ ที่ผู้ใช้ต้องการค้นหาข้อมูล หากต้องการหยุดการทำงานของฟังก์ชันนี้เพียงพิมพ์ 'ออก' แล้วกด Enter

ข้อมูล():

ฟังก์ชันนี้ส่งคืนข้อมูลเกี่ยวกับสิ่งที่ต้องการ , โมดูล ฯลฯ

scipy.info (คลัสเตอร์)

แหล่งที่มา ():

ซอร์สโค้ดจะถูกส่งคืนสำหรับอ็อบเจ็กต์ที่เขียนเท่านั้น . ฟังก์ชันนี้จะไม่ส่งคืนข้อมูลที่เป็นประโยชน์ในกรณีที่เมธอดหรืออ็อบเจกต์เขียนด้วยภาษาอื่นเช่น C อย่างไรก็ตามในกรณีที่คุณต้องการใช้ฟังก์ชันนี้คุณสามารถทำได้ดังนี้:

scipy.source (คลัสเตอร์)

ฟังก์ชั่นพิเศษ:

SciPy มีฟังก์ชันพิเศษมากมายที่ใช้ในฟิสิกส์คณิตศาสตร์เช่นรูปไข่ฟังก์ชั่นอำนวยความสะดวกแกมมาเบต้า ฯลฯหากต้องการค้นหาฟังก์ชันทั้งหมดคุณสามารถใช้ฟังก์ชัน help () ตามที่อธิบายไว้ก่อนหน้านี้

ฟังก์ชันเอกซ์โปเนนเชียลและตรีโกณมิติ:

แพ็คเกจฟังก์ชันพิเศษของ SciPy มีฟังก์ชันมากมายที่คุณสามารถค้นหาเลขชี้กำลังและแก้ปัญหาตรีโกณมิติได้

พิจารณาตัวอย่างต่อไปนี้:

ตัวอย่าง:

จาก scipy import special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( ง)

เอาท์พุท:

1,000.0
8.0
1.0
0.7071067811865475

มีฟังก์ชั่นอื่น ๆ อีกมากมายที่มีอยู่ในแพ็คเกจฟังก์ชันพิเศษของ SciPy ที่คุณสามารถลองได้ด้วยตัวคุณเอง

ฟังก์ชั่นการรวม:

SciPy มีฟังก์ชันมากมายในการแก้อินทิกรัล SciPy เป็นคลังเก็บฟังก์ชันสำหรับแก้ปัญหาปริพันธ์ทุกประเภทตั้งแต่ตัวรวมเชิงอนุพันธ์ธรรมดาไปจนถึงการใช้กฎสี่เหลี่ยมคางหมูเพื่อคำนวณปริพันธ์

การรวมทั่วไป:

SiPy มีฟังก์ชันที่ชื่อ รูปสี่เหลี่ยม เพื่อคำนวณอินทิกรัลของฟังก์ชันที่มีตัวแปรเดียว ขีด จำกัด สามารถ ± & infin(± inf) เพื่อระบุขีด จำกัด ที่ไม่มีที่สิ้นสุด ไวยากรณ์ของฟังก์ชัน quad () มีดังนี้:

ซิงค์:

รูปสี่เหลี่ยม (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, ขีด จำกัด = 50, คะแนน = ไม่มี, น้ำหนัก = ไม่มี, wvar = ไม่มี, wopts = ไม่มี , maxp1 = 50, limlst = 50)

ที่นี่ฟังก์ชันจะถูกรวมระหว่างขีด จำกัด a และ b (สามารถเป็นอนันต์ได้เช่นกัน)

ตัวอย่าง:

จากการนำเข้า scipy พิเศษจากการนำเข้า scipy รวม a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) พิมพ์ (b)

ในตัวอย่างข้างต้นฟังก์ชัน 'a' ถูกประเมินระหว่างขีด จำกัด 0, 1 เมื่อเรียกใช้โค้ดนี้คุณจะเห็นผลลัพธ์ต่อไปนี้

เอาท์พุท:

(3.9086503371292665, 4.3394735994897923e-14)

ฟังก์ชันอินทิกรัลคู่:

SciPy ให้ dblquad ที่สามารถใช้ในการคำนวณปริพันธ์คู่ อินทิกรัลคู่อย่างที่เราหลายคนรู้ประกอบด้วยตัวแปรจริงสองตัว ฟังก์ชัน dblquad () จะนำฟังก์ชันไปรวมเป็นพารามิเตอร์พร้อมกับตัวแปรอื่น ๆ อีก 4 ตัวแปรที่กำหนดขีด จำกัด และฟังก์ชัน สีย้อม และ dx.

ตัวอย่าง:

จากการนำเข้า scipy รวม a = lambda y, x: x * y ** 2 b = lambda x: 1 c = lambda x: -1 รวม. dblquad (a, 0, 2, b, c)

เอาท์พุท:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy มีฟังก์ชั่นอื่น ๆ มากมายในการประเมินปริพันธ์สามตัว, ปริพันธ์ n, ปริพันธ์ Romberg และอื่น ๆ ที่คุณสามารถสำรวจรายละเอียดเพิ่มเติมได้ หากต้องการดูรายละเอียดทั้งหมดเกี่ยวกับฟังก์ชันที่จำเป็นให้ใช้ฟังก์ชันวิธีใช้

ฟังก์ชั่นการเพิ่มประสิทธิภาพ:

scipy.optimize มีอัลกอริทึมการเพิ่มประสิทธิภาพที่ใช้กันทั่วไปจำนวนมากซึ่งสามารถมองเห็นได้โดยใช้ฟังก์ชันวิธีใช้

โดยทั่วไปประกอบด้วยสิ่งต่อไปนี้:

  • การย่อขนาดของฟังก์ชันสเกลาร์หลายตัวแปรแบบไม่ จำกัด และ จำกัด เช่น ย่อเล็กสุด (เช่น BFGS, Newton Conjugate Gradient, Nelder_mead simplex เป็นต้น)
  • รูทีนการปรับให้เหมาะสมทั่วโลก (เช่น Differential_evolution, dual_annealing ฯลฯ )
  • การย่อขนาดกำลังสองน้อยที่สุดและการปรับเส้นโค้ง (เช่น less_squares, curve_fit ฯลฯ )
  • Scalar univariate functions minimizers และ root finders (เช่น minimize_scalar และ root_scalar)
  • ตัวแก้ระบบสมการหลายตัวแปรโดยใช้อัลกอริทึมเช่นไฮบริด Powell, Levenberg-Marquardt

ฟังก์ชัน Rosenbrook:

ฟังก์ชัน Rosenbrook ( กุหลาบ ) เป็นปัญหาการทดสอบที่ใช้สำหรับอัลกอริทึมการปรับให้เหมาะสมตามการไล่ระดับสี มีการกำหนดไว้ดังต่อไปนี้ใน SciPy:

rosen-Scipy กวดวิชา edurekaตัวอย่าง:

นำเข้า numpy เป็น np จาก scipy.optimize import rosen a = 1.2 * np.arange (5) rosen (a)

เอาท์พุท: 7371.0399999999945

Nelder-Mead:

เนลเดอร์–Mead method เป็นวิธีการเชิงตัวเลขที่มักใช้เพื่อค้นหาค่าต่ำสุด / สูงสุดของฟังก์ชันในช่องว่างหลายมิติ ในตัวอย่างต่อไปนี้วิธีการย่อเล็กสุดถูกใช้ร่วมกับอัลกอริทึม Nelder-Mead

ตัวอย่าง:

จากการนำเข้า scipy เพิ่มประสิทธิภาพ a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

เอาท์พุท: อาร์เรย์ ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

ฟังก์ชั่นการแก้ไข:

ในสาขาการวิเคราะห์ตัวเลขการแก้ไขหมายถึงการสร้างจุดข้อมูลใหม่ภายในชุดของจุดข้อมูลที่ทราบ ไลบรารี SciPy ประกอบด้วยแพ็กเกจย่อยชื่อ scipy.interpolate ซึ่งประกอบด้วยฟังก์ชันและคลาส spline คลาสการแก้ไขแบบหนึ่งมิติและหลายมิติ (แบบยูนิวารีเอตและหลายตัวแปร) เป็นต้น

การแก้ไขแบบ Univariate:

การแก้ไขแบบ Univariate นั้นเป็นพื้นที่ของเส้นโค้งที่เหมาะสมหาเส้นโค้งที่พอดีกับชุดของจุดข้อมูลสองมิติ SciPy ให้ interp1d ฟังก์ชันที่สามารถใช้เพื่อสร้างการแก้ไขแบบไม่แปรผัน

ตัวอย่าง:

นำเข้า matplotlib.pyplot เป็น plt จาก scipy import interpolate x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) # ใช้ฟังก์ชันการแก้ไขที่ส่งกลับโดย 'interp1d` plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

เอาท์พุท:

การแก้ไขหลายตัวแปร:

การแก้ไขหลายตัวแปร(เชิงพื้นที่การแก้ไข) เป็นชนิดการแก้ไขกับฟังก์ชันที่ประกอบด้วยตัวแปรมากกว่าหนึ่งตัว ตัวอย่างต่อไปนี้แสดงให้เห็นถึงตัวอย่างของไฟล์ interp2d ฟังก์ชัน
การสอดแทรกผ่านตาราง 2 มิติโดยใช้ฟังก์ชัน interp2d (x, y, z) โดยทั่วไปจะใช้อาร์เรย์ x, y, z เพื่อประมาณบางฟังก์ชัน ฉ:“ z = f (x, y)“ และส่งคืนฟังก์ชันที่ใช้วิธีการโทร การแก้ไข spline เพื่อหามูลค่าของคะแนนใหม่
ตัวอย่าง:

จาก scipy import interpolate import matplotlib.pyplot เป็น plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolate.interp2d (x, y, z, kind = 'cubic') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. พล็อต (x, z [0,:], 'ro-', x2, z2 [0,:], '-') plt.show ()

เอาท์พุท:

ฟังก์ชั่นการแปลงฟูริเยร์:

การวิเคราะห์ฟูริเยร์เป็นวิธีการที่เกี่ยวข้องกับการแสดงฟังก์ชันเป็นผลรวมของส่วนประกอบตามคาบและการกู้คืนสัญญาณจากส่วนประกอบเหล่านั้น fft สามารถใช้ฟังก์ชันเพื่อส่งคืนไฟล์การแปลงฟูเรียร์แบบไม่ต่อเนื่องของลำดับจริงหรือเชิงซ้อน

ตัวอย่าง:

จาก scipy.fftpack นำเข้า fft, ifft x = np.array ([0,1,2,3]) y = fft (x) พิมพ์ (y)

เอาท์พุท: [6. + 0.j -2. + 2.j -2. + 0.j -2. -2.j]

ในทำนองเดียวกันคุณสามารถหาค่าผกผันของสิ่งนี้ได้โดยใช้ ifft ฟังก์ชันดังต่อไปนี้:

ตั้งค่าเส้นทางคลาสใน linux

ตัวอย่าง:

rom scipy.fftpack นำเข้า fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) พิมพ์ (y)

เอาท์พุท: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

ฟังก์ชั่นการประมวลผลสัญญาณ:

การประมวลผลสัญญาณเกี่ยวข้องกับการวิเคราะห์แก้ไขและสังเคราะห์สัญญาณเช่นเสียงภาพเป็นต้น SciPy มีฟังก์ชันบางอย่างที่คุณสามารถออกแบบกรองและแก้ไขข้อมูลมิติเดียวและสองมิติได้

การกรอง:

การกรองสัญญาณโดยพื้นฐานแล้วคุณจะลบส่วนประกอบที่ไม่ต้องการออกไป ในการกรองตามลำดับคุณสามารถใช้ประโยชน์จากไฟล์ order_filter ฟังก์ชัน โดยทั่วไปแล้วฟังก์ชันนี้จะทำการกรองตามลำดับบนอาร์เรย์ ไวยากรณ์ของฟังก์ชันนี้มีดังนี้:

ซิงค์:
order_filter (a โดเมนอันดับ)

a = อาร์เรย์อินพุต N มิติ

domain = mask array ที่มีขนาดเท่ากับ 'a'

อันดับ = จำนวนที่ไม่ติดลบที่เลือกองค์ประกอบจากรายการหลังจากจัดเรียงแล้ว (0 คือน้อยที่สุดตามด้วย 1 …)

ตัวอย่าง:

จากสัญญาณนำเข้า scipy x = np.arange (35) .reshape (7, 5) domain = np.identity (3) พิมพ์ (x, end = 'nn') พิมพ์ (signal.order_filter (x, โดเมน, 1))

เอาท์พุท:

[[0 1 2 3 4]
[5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

[[0. 1. 2. 3. 0. ]
[5. 6. 7. 8. 3. ]
[10. 11. 12. 13. 8. ]
[สิบห้า. 16. 17. 18. 13. ]
[ยี่สิบ. 21. 22. 23. 18. ]
[25. 26. 27. 28. 23. ]
[0. 25. 26. 27. 28. ]]

รูปคลื่น:

แพคเกจย่อย scipy.signal ยังประกอบด้วยฟังก์ชันต่างๆที่สามารถใช้เพื่อสร้างรูปคลื่น หนึ่งในฟังก์ชันดังกล่าวคือ เจี๊ยบ . ฟังก์ชันนี้คือ fเครื่องกำเนิดโคไซน์ที่มีความจำเป็นและไวยากรณ์มีดังนี้:

ซิงค์:
เสียงประสาน (t, f0, t1, f1, วิธีการ = 'เชิงเส้น', phi = 0, จุดยอด_zero = จริง)

ที่ไหน

ตัวอย่าง:

จาก scipy.signal import chirp, spectrogram import matplotlib.pyplot เป็น plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ('Linear Chirp') plt.xlabel ('time in sec)') plt.show ()

เอาท์พุท:

พีชคณิตเชิงเส้น:

พีชคณิตเชิงเส้นเกี่ยวข้องกับสมการเชิงเส้นและการแทนค่าโดยใช้ช่องว่างเวกเตอร์และเมทริกซ์ SciPy ถูกสร้างขึ้นบนไลบรารี ATLAS LAPACK และ BLAS และคือรวดเร็วมากในการแก้ปัญหาที่เกี่ยวข้องกับพีชคณิตเชิงเส้น นอกจากฟังก์ชันทั้งหมดจาก numpy.linalg แล้ว scipy.linalg ยังมีฟังก์ชันขั้นสูงอื่น ๆ อีกมากมาย นอกจากนี้หากไม่ได้ใช้ numpy.linalg ร่วมกับไฟล์การสนับสนุน ATLAS LAPACK และ BLAS ทำให้ scipy.linalg เร็วกว่า numpy.linalg

การหาค่าผกผันของเมทริกซ์:

ในทางคณิตศาสตร์ผกผันของเมทริกซ์ Aคือเมทริกซ์ดังนั้นAB = Iที่ไหนผมคือเมทริกซ์เอกลักษณ์ที่ประกอบด้วยเมทริกซ์ตามเส้นทแยงมุมหลักที่แสดงว่าB = A-หนึ่ง. ใน SciPy สามารถหาค่าผกผันนี้ได้โดยใช้ linalg.inv วิธี.

ตัวอย่าง:

นำเข้า numpy เป็น np จากการนำเข้า scipy linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) พิมพ์ (B)

เอาท์พุท:

[[-0.6 0.4]
[0.8 -0.2]]

การค้นหาปัจจัย:

ค่าที่ได้มาทางคณิตศาสตร์จากสัมประสิทธิ์ของเมทริกซ์เรียกว่าดีเทอร์มีแนนต์ของเมทริกซ์สี่เหลี่ยม ใน SciPy สามารถทำได้โดยใช้ฟังก์ชัน ที่ ซึ่งมีไวยากรณ์ต่อไปนี้:

ซิงค์:
det (a, overwrite_a = False, check_finite = True)
ที่ไหน

a: (M, M) เป็นเมทริกซ์สี่เหลี่ยม

overwrite_a (bool หรือไม่ก็ได้): อนุญาตให้เขียนทับข้อมูลในไฟล์

check_finite (บูลเป็นทางเลือก): เพื่อตรวจสอบว่าเมทริกซ์อินพุตประกอบด้วยตัวเลข จำกัด เท่านั้นหรือไม่

ตัวอย่าง:

นำเข้าตัวเลขเป็น np จากการนำเข้า scipy linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) พิมพ์ (B)

เอาท์พุท: -5.0

ค่าลักษณะเฉพาะที่เบาบาง:

ค่าลักษณะเฉพาะคือชุดของสเกลาร์เฉพาะที่เชื่อมโยงกับสมการเชิงเส้น ARPACK ช่วยให้คุณค้นหาค่าลักษณะเฉพาะ (eigenvectors) ได้ค่อนข้างเร็ว ฟังก์ชั่นที่สมบูรณ์ของ ARPACK บรรจุอยู่ภายในสองอินเทอร์เฟซระดับสูงซึ่ง ได้แก่ scipy.sparse.linalg.eigs และ scipy.sparse.linalg.eigsh eigs อินเทอร์เฟซ eigs ช่วยให้คุณสามารถค้นหาค่าลักษณะเฉพาะของเมทริกซ์สี่เหลี่ยมจัตุรัสที่ไม่สมมาตรจริงหรือซับซ้อนในขณะที่อินเทอร์เฟซ eigsh มีอินเทอร์เฟซสำหรับเมทริกซ์แบบสมมาตรจริงหรือแบบซับซ้อน - ฤๅษี

eigh ฟังก์ชันแก้ปัญหาค่าลักษณะเฉพาะทั่วไปสำหรับเมทริกซ์ Hermitian ที่ซับซ้อนหรือสมมาตรจริง

ตัวอย่าง:

จาก scipy.linalg import eigh import numpy เป็น np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = eigh (A) print ('Selected eigenvalues:', a) print ('Complex ndarray:', b)

เอาท์พุท:

ค่าลักษณะเฉพาะที่เลือก: [-2.53382695 1.66735639 3.69488657 12.17158399]
ndarray ที่ซับซ้อน: [[0.69205614 0.5829305 0.25682823 -0.33954321]
[-0.68277875 0.46838936 0.03700454 -0.5595134]
[0.23275694 -0.29164622 -0.72710245 -0.57627139]
[0.02637572 -0.59644441 0.63560361 -0.48945525]]

โครงสร้างข้อมูลเชิงพื้นที่และอัลกอริทึม:

ข้อมูลเชิงพื้นที่โดยทั่วไปประกอบด้วยวัตถุที่ประกอบด้วยเส้นจุดพื้นผิว ฯลฯ แพ็คเกจ scipy.spatial ของ SciPy สามารถคำนวณแผนภาพ Voronoi รูปสามเหลี่ยม ฯลฯ โดยใช้ไลบรารี Qhull นอกจากนี้ยังประกอบด้วยการใช้งาน KDTree สำหรับแบบสอบถามจุดเพื่อนบ้านที่ใกล้ที่สุด

การวิเคราะห์แบบ Delaunay:

ในทางคณิตศาสตร์สามเหลี่ยมของ Delaunay สำหรับชุดของจุดที่ไม่ต่อเนื่องในระนาบคือการหาสามเหลี่ยมที่ไม่มีจุดใดในชุดของจุดที่กำหนดคือภายในวงกลมของสามเหลี่ยมใด ๆ

ตัวอย่าง:

นำเข้า matplotlib.pyplot เป็น plt จาก scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (คะแนน) #Delaunay object print (a) print (a.simplices) plt.triplot (points [:, 0], points [:, 1], a.simplices) plt.plot (points [:, 1], points [:, 0], 'o') plt.show ()

เอาท์พุท:

ฟังก์ชั่นการประมวลผลภาพหลายมิติ:

การประมวลผลภาพโดยทั่วไปเกี่ยวข้องกับการดำเนินการกับภาพเพื่อดึงข้อมูลหรือเพื่อให้ได้ภาพที่ได้รับการปรับปรุงจากภาพต้นฉบับ แพ็คเกจ scipy.ndimage ประกอบด้วยไฟล์ฟังก์ชั่นการประมวลผลและวิเคราะห์ภาพที่ออกแบบมาเพื่อทำงานร่วมกับอาร์เรย์ของมิติข้อมูลโดยพลการ

การแปลงและความสัมพันธ์:

SciPy มีฟังก์ชั่นมากมายที่อนุญาตให้มีความสัมพันธ์และการแปลงภาพ

  • ฟังก์ชั่น correlate1d สามารถใช้ในการคำนวณสหสัมพันธ์มิติเดียวตามแกนที่กำหนด
  • ฟังก์ชั่น สัมพันธ์กัน อนุญาตให้มีความสัมพันธ์หลายมิติของอาร์เรย์ที่กำหนดกับเคอร์เนลที่ระบุ
  • ฟังก์ชั่น Convolve1d สามารถใช้คำนวณ Convolution แบบมิติเดียวตามแกนที่กำหนด
  • ฟังก์ชั่น ชวนเชื่อ อนุญาตให้มีการแปลงหลายมิติของอาร์เรย์ที่กำหนดด้วยเคอร์เนลที่ระบุ

ตัวอย่าง:

นำเข้า numpy เป็น np จาก scipy.ndimage import correlate1d correlate1d ([3,5,1,7,2,6,9,4], weights = [1,2])

เอาท์พุท: อาร์เรย์ ([9, 13, 7, 15, 11, 14, 24, 17])

ไฟล์ IO:

แพ็คเกจ scipy.io มีฟังก์ชันมากมายที่ช่วยให้คุณจัดการไฟล์ในรูปแบบต่างๆเช่นไฟล์ MATLAB ไฟล์ IDL ไฟล์ Matrix Market เป็นต้น

ในการใช้แพ็คเกจนี้คุณจะต้องนำเข้าดังต่อไปนี้:

นำเข้า scipy.io เป็น sio

สำหรับข้อมูลที่สมบูรณ์เกี่ยวกับแพ็กเกจย่อยคุณสามารถดูเอกสารอย่างเป็นทางการได้ที่ ไฟล์ IO .

สิ่งนี้นำเราไปสู่ตอนท้ายของบทช่วยสอน SciPy นี้ ฉันหวังว่าคุณจะเข้าใจทุกอย่างชัดเจน ให้แน่ใจว่าคุณฝึกฝนให้มากที่สุด .

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อก“ SciPy Tutorial” และเราจะติดต่อกลับโดยเร็วที่สุด

หากต้องการรับความรู้เชิงลึกเกี่ยวกับ Python พร้อมกับแอพพลิเคชั่นต่างๆคุณสามารถลงทะเบียนเพื่อถ่ายทอดสด ด้วยการสนับสนุนตลอด 24 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต