คณิตศาสตร์เกี่ยวข้องกับแนวคิดจำนวนมากที่มีความสำคัญมาก แต่ในขณะเดียวกันก็ซับซ้อนและใช้เวลานาน อย่างไรก็ตาม มีไลบรารี SciPy เต็มรูปแบบที่ช่วยแก้ปัญหานี้ให้เรา ในบทช่วยสอน SciPy นี้คุณจะได้เรียนรู้วิธีใช้ประโยชน์จากไลบรารีนี้พร้อมกับฟังก์ชันบางอย่างและตัวอย่าง
ก่อนดำเนินการต่อโปรดดูหัวข้อทั้งหมดที่กล่าวถึงในบทความนี้:
- SciPy คืออะไร?
- NumPy กับ SciPy
- แพ็คเกจย่อยใน SciPy
- ฟังก์ชั่นพื้นฐาน
- ฟังก์ชั่นพิเศษ
- ฟังก์ชันการรวม
- ฟังก์ชั่นการเพิ่มประสิทธิภาพ
- ฟังก์ชันการแปลงฟูเรียร์
- ฟังก์ชั่นการประมวลผลสัญญาณ
- พีชคณิตเชิงเส้น
- ค่าลักษณะเฉพาะที่เบาบาง
- โครงสร้างข้อมูลเชิงพื้นที่และอัลกอริทึม
- ฟังก์ชั่นการประมวลผลภาพหลายมิติ
- ไฟล์ IO
มาเริ่มกันเลย :)
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:
ตัวอย่าง:
นำเข้า 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 ชั่วโมงทุกวันและการเข้าถึงตลอดชีวิต