دروس SciPy: ما هو Python SciPy وكيفية استخدامه؟



SciPy هي مكتبة لغة Python تُستخدم لحل المشكلات العلمية والرياضية. NumPy مقابل SciPy. أساسي ، خاص ، تكامل ، تحسين ، إلخ مع أمثلة.

تتعامل الرياضيات مع عدد كبير من المفاهيم المهمة جدًا ولكنها في نفس الوقت معقدة وتستغرق وقتًا طويلاً. ومع ذلك، يوفر مكتبة SciPy الكاملة التي تحل هذه المشكلة لنا. في هذا البرنامج التعليمي SciPy ، ستتعلم كيفية الاستفادة من هذه المكتبة إلى جانب بعض الوظائف وأمثلةها.

قبل الانتقال ، ألق نظرة على جميع الموضوعات التي تمت مناقشتها في هذه المقالة:





لذلك دعونا نبدأ. :)

ما هو SciPy؟

SciPy هي مكتبة بايثون مفتوحة المصدر تُستخدم لحل المشكلات العلمية والرياضية. إنه مبني على التمديد ويسمح للمستخدم بمعالجة البيانات وتصورها باستخدام مجموعة واسعة من الأوامر عالية المستوى. كما ذكرنا سابقًا ، يعتمد SciPy على NumPy وبالتالي إذا قمت باستيراد SciPy ، فلا داعي لاستيراد NumPy.



NumPy مقابل SciPy

كلا NumPy و SciPy هما تستخدم للتحليل الرياضي والعددي المستخدم. يحتوي NumPy على بيانات الصفيف والعمليات الأساسية مثل الفرز والفهرسة وما إلى ذلك ، بينما يتكون SciPy من جميع الرموز الرقمية. على الرغم من أن NumPy يوفر عددًا من يمكن أن تساعد في حل الجبر الخطي وتحويلات فورييه وما إلى ذلك ، فإن SciPy هي المكتبة التي تحتوي بالفعل على إصدارات كاملة الميزات من هذه الوظائف إلى جانب العديد من الوظائف الأخرى. ومع ذلك ، إذا كنت تجري تحليلًا علميًا باستخدام Python ، فستحتاج إلى تثبيت كل من NumPy و SciPy نظرًا لأن SciPy يبني على NumPy.

الحزم الفرعية في SciPy:

يحتوي SciPy على عدد من الحزم الفرعية للحسابات العلمية المختلفة الموضحة في الجدول التالي:

اسموصف
العنقوديةخوارزميات التجميع
الثوابتالثوابت الفيزيائية والرياضية
fftpackإجراءات تحويل فورييه السريعة
دمجحلول المعادلات التفاضلية والتكاملية العادية
تحققالاستيفاء وتنعيم المفاتيح
أناالمدخلات والمخرجات
لينالجالجبر الخطي
أنا أطيرمعالجة الصور ثلاثية الأبعاد
أودرانحدار المسافة المتعامد
تحسينإجراءات التحسين وإيجاد الجذور
الإشارةمعالجة الإشارات
متناثرالمصفوفات المتفرقة والإجراءات المرتبطة بها
مكانيهياكل وخوارزميات البيانات المكانية
مميزوظائف خاصة
احصائياتالتوزيعات والوظائف الإحصائية

ومع ذلك ، للحصول على وصف تفصيلي ، يمكنك متابعة الوثائق الرسمية .



يجب استيراد هذه الحزم حصريًا قبل استخدامها. فمثلا:

من مجموعة استيراد scipy

قبل النظر في كل من هذه الوظائف بالتفصيل ، دعنا أولاً نلقي نظرة على الوظائف الشائعة في كل من NumPy و SciPy.

وظائف أساسية:

التفاعل مع NumPy:

يعتمد SciPy على NumPy وبالتالي يمكنك الاستفادة من وظائف NumPy نفسها للتعامل مع المصفوفات. لمعرفة التفاصيل حول هذه الوظائف ، يمكنك ببساطة الاستفادة من وظائف التعليمات () أو المعلومات () أو المصدر ().

مساعدة():

للحصول على معلومات حول أي وظيفة ، يمكنك الاستفادة من مساعدة() وظيفة. هناك طريقتان يمكن استخدام هذه الوظيفة بهما:

  • بدون أي معلمات
  • باستخدام المعلمات

إليك مثال يوضح كلا الطريقتين المذكورتين أعلاه:

من مساعدة كتلة الاستيراد scipy (الكتلة) #with مساعدة المعلمة () # بدون معلمة

عندما تقوم بتنفيذ الكود أعلاه ، فإن التعليمات الأولى () ترجع المعلومات حول العنقودية وحدة فرعية. تطلب المساعدة الثانية () من المستخدم إدخال اسم أي وحدة أو كلمة رئيسية أو ما إلى ذلك والتي يرغب المستخدم في الحصول على معلومات عنها. لإيقاف تنفيذ هذه الوظيفة ، ما عليك سوى كتابة 'quit' واضغط على Enter.

معلومات ():

تقوم هذه الوظيفة بإرجاع معلومات حول الملف المطلوب ، وحدات ، إلخ.

scipy.info (الكتلة)

مصدر():

يتم إرجاع شفرة المصدر فقط للكائنات المكتوبة . لا تقوم هذه الوظيفة بإرجاع معلومات مفيدة في حالة كتابة الأساليب أو الكائنات بأية لغة أخرى مثل C. ومع ذلك ، في حالة رغبتك في الاستفادة من هذه الوظيفة ، يمكنك القيام بذلك على النحو التالي:

scipy.source (الكتلة)

وظائف خاصة:

يوفر SciPy عددًا من الوظائف الخاصة المستخدمة في الفيزياء الرياضية مثل الإهليلجيه، وظائف الراحة ، جاما ، بيتا ، إلخ.للبحث عن جميع الوظائف ، يمكنك الاستفادة من وظيفة help () كما هو موضح سابقًا.

الدوال الأسية والمثلثية:

توفر حزمة الوظيفة الخاصة من SciPy عددًا من الوظائف التي يمكنك من خلالها العثور على الأس وحل المشكلات المثلثية.

c vs c ++ vs java

تأمل المثال التالي:

مثال:

من 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 ( د)

انتاج:

1000.0
8.0
1.0
0.7071067811865475

هناك العديد من الوظائف الأخرى الموجودة في حزمة الوظائف الخاصة لـ SciPy والتي يمكنك تجربتها بنفسك.

وظائف التكامل:

يوفر SciPy عددًا من الوظائف لحل التكاملات. بدءًا من التكامل التفاضلي العادي إلى استخدام قواعد شبه المنحرف لحساب التكاملات ، يعد SciPy مخزنًا للوظائف لحل جميع أنواع مسائل التكاملات.

التكامل العام:

يوفر SiPy وظيفة تسمى رباعية لحساب تكامل دالة لها متغير واحد. يمكن أن تكون الحدود ± & ما لا نهاية(± إنف) للإشارة إلى حدود لا نهائية. صيغة الدالة quad () هي كما يلي:

بناء الجملة:

رباعي (func، a، b، args = ()، full_output = 0، epsabs = 1.49e-08، epsrel = 1.49e-08، Limit = 50، Points = None، weight = None، wvar = None، wopts = لا شيء ، maxp1 = 50، limlst = 50)

هنا ، سيتم دمج الوظيفة بين الحدين a و b (يمكن أيضًا أن تكون لانهائية).

مثال:

من scipy استيراد خاص من scipy import تكامل a = lambda x: special.exp10 (x) b = scipy.integrate.quad (a، 0، 1) print (b)

في المثال أعلاه ، يتم تقييم الوظيفة 'أ' بين الحدود 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 Integrals وما إلى ذلك والتي يمكنك استكشافها بالتفصيل. للعثور على جميع التفاصيل حول الوظائف المطلوبة ، استخدم وظيفة المساعدة.

وظائف التحسين:

يوفر scipy.optimize عددًا من خوارزميات التحسين الشائعة الاستخدام والتي يمكن رؤيتها باستخدام وظيفة المساعدة.

يتكون بشكل أساسي مما يلي:

  • التقليل غير المقيد والمقيد للوظائف العددية متعددة المتغيرات ، أي قلل (على سبيل المثال ، BFGS ، Newton Conjugate Gradient ، Nelder_mead simplex ، إلخ)
  • إجراءات التحسين العالمية (على سبيل المثال ، التفاضل_التطور ، التفسير المزدوج ، إلخ)
  • تصغير المربعات الصغرى وتركيب المنحنى (على سبيل المثال ، المربعات الصغرى ، و curve_fit ، إلخ)
  • أدوات تصغير الدوال أحادية المتغير ومكتشفات الجذر (على سبيل المثال ، تقليل_تسلسل و root_scalar)
  • حلول نظام المعادلات متعددة المتغيرات باستخدام الخوارزميات مثل hybrid Powell و Levenberg-Marquardt.

وظيفة روزنبروك:

وظيفة روزنبروك ( روزن ) هي مشكلة اختبار تستخدم لخوارزميات التحسين القائمة على التدرج. يتم تعريفه على النحو التالي في SciPy:

روزن-سكيبي التعليمي- edurekaمثال:

استيراد numpy كـ np من scipy.optimize استيراد rosen a = 1.2 * np.arange (5) rosen (a)

انتاج: 7371.0399999999945

نيلدر ميد:

النيلدرطريقة –Mead هي طريقة عددية تُستخدم غالبًا للعثور على الحد الأدنى / الأقصى للدالة في مساحة متعددة الأبعاد. في المثال التالي ، يتم استخدام طريقة التصغير مع خوارزمية 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 تتكون منوظائف وفئات الشريحة ، فئات الاستيفاء أحادية البعد ومتعددة الأبعاد (أحادية المتغير ومتعددة المتغيرات) ، إلخ.

الاستيفاء أحادي المتغير:

الاستيفاء أحادي المتغير هو في الأساس منطقة ملائمة للمنحنىيجد المنحنى الذي يوفر ملاءمة تامة لسلسلة من نقاط البيانات ثنائية الأبعاد. يوفر 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 وظيفة.
الإقحام عبر شبكة ثنائية الأبعاد باستخدام دالة interp2d (x ، y ، z) سيستخدم أساسًا المصفوفات x و y و z لتقريب بعض الوظائف f: 'z = f (x، y)' وإرجاع دالة تستخدم طريقة الاستدعاء الخاصة بها استيفاء العمود الفقري للعثور على قيمة النقاط الجديدة.
مثال:

من scipy import interpolate matplotlib.pyplot as 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 import fft، ifft x = np.array ([0،1،2،3]) y = fft (x) print (y)

انتاج: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

وبالمثل ، يمكنك إيجاد معكوس هذا باستخدام ifft تعمل على النحو التالي:

مثال:

rom scipy.fftpack استيراد fft ، ifft x = np.array ([0،1،2،3]) y = ifft (x) print (y)

انتاج: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

وظائف معالجة الإشارة:

صفقات معالجة الإشارة معتحليل وتعديل وتوليف الإشارات مثل الصوت والصور وما إلى ذلك. يوفر SciPy بعض الوظائف التي يمكنك من خلالها تصميم وترشيح واستيفاء البيانات أحادية وثنائية الأبعاد.

الفلتره:

عن طريق تصفية إشارة ، تقوم بإزالة المكونات غير المرغوب فيها منها. لإجراء تصفية مرتبة ، يمكنك الاستفادة من ملف order_filter وظيفة. تؤدي هذه الوظيفة بشكل أساسي تصفية مرتبة على مصفوفة. تكون صيغة هذه الوظيفة كما يلي:

بناء الجملة:
order_filter (أ ، مجال ، رتبة)

أ = مجموعة إدخال الأبعاد N

المجال = مصفوفة القناع لها نفس عدد أبعاد `أ`

رتبة = رقم غير سالب يختار العناصر من القائمة بعد الفرز (0 هو الأصغر يليه 1…)

مثال:

من إشارة الاستيراد scipy x = np.arange (35) .reshape (7، 5) domain = np.identity (3) print (x، end = 'nn') print (signal.order_filter (x، domain، 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، method = 'خطي'، phi = 0، vertex_zero = صحيح)

أين،

مثال:

من scipy.signal import chirp ، استيراد matplotlib.pyplot as plt t = np.linspace (6، 10، 500) w = chirp (t، f0 = 4، f1 = 2، t1 = 5، method = 'خطي') 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.

إيجاد معكوس المصفوفة:

رياضيا ، معكوس المصفوفة أهي المصفوفةبمثل ذلكAB = أناأينأناهي مصفوفة الهوية تتكون من تلك الموجودة أسفل القطر الرئيسي المشار إليه كـب = أ-واحد. في SciPy ، يمكن الحصول على هذا المعكوس باستخدام linalg.inv طريقة.

مثال:

java تحويل من المضاعفة إلى int
استيراد numpy كـ np من scipy import linalg A = np.array ([[1،2]، [4،3]]) B = linalg.inv (A) print (B)

انتاج:

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

البحث عن المحددات:

تُعرف القيمة المشتقة حسابيًا من معاملات المصفوفة باسم محدد المصفوفة المربعة. في SciPy ، يمكن القيام بذلك باستخدام دالة ال الذي يحتوي على النحو التالي:

بناء الجملة:
det (a، overwrite_a = False، check_finite = True)
أين،

أ: (M ، M) هي مصفوفة مربعة

overwrite_a (منطقي ، اختياري): السماح بالكتابة فوق البيانات في ملف

check_finite (منطقي ، اختياري): للتحقق مما إذا كانت مصفوفة الإدخال تتكون فقط من أرقام محدودة

مثال:

استيراد numpy كـ np من scipy import linalg A = np.array ([[1،2]، [4،3]]) B = linalg.det (A) print (B)

انتاج: -5.0

القيم الذاتية المتفرقة:

القيم الذاتية هي مجموعة محددة من المقاييس المرتبطة بالمعادلات الخطية. يوفر ARPACK الذي يسمح لك بالعثور على القيم الذاتية (المتجهات الذاتية) بسرعة كبيرة. يتم تعبئة وظائف ARPACK الكاملة في الداخلاثنين من الواجهات عالية المستوى وهي scipy.sparse.linalg.eigs و scipy.sparse.linalg.eigsh. إيغس. تتيح لك واجهة eigs العثور على القيم الذاتية لمصفوفات مربعة غير متماثلة حقيقية أو معقدة بينما تحتوي واجهة eigsh على واجهات لمصفوفات متماثلة حقيقية أو مصفوفات معقدة.

ال أي الدالة تحل مشكلة القيمة الذاتية المعممة لمصفوفة هرميتية معقدة أو مصفوفة متماثلة حقيقية.

مثال:

من scipy.linalg استيراد أي استيراد 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)

انتاج:

قيم eigenvalues ​​المحددة: [-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 حسابهامخططات فورونوي ، والتثليثات ، إلخ باستخدام مكتبة Qhull. وهو يتألف أيضًا من تطبيقات KDTree لاستعلامات أقرب نقطة مجاورة.

مثلثات ديلوناي:

رياضيا ، مثلثات Delaunay لمجموعة من النقاط المنفصلة في مستوى ما هي مثلث بحيث لا توجد نقطة في مجموعة النقاط المعطاةداخل دائرة أي مثلث.

مثال:

import matplotlib.pyplot as 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 (نقاط [:، 0]، نقاط [:، 1]، a.simplices) plt.plot (نقاط [: ، 1] ، نقاط [:، 0]، 'o') plt.show ()

انتاج:

وظائف معالجة الصور متعددة الأبعاد:

تتعامل معالجة الصور أساسًا مع إجراء عمليات على صورة لاسترداد المعلومات أو للحصول على صورة محسّنة من الصورة الأصلية. تتكون حزمة scipy.ndimage من عدد من ملفاتوظائف معالجة وتحليل الصور المصممة للعمل مع مصفوفات ذات أبعاد عشوائية.

الالتواء والارتباط:

يوفر SciPy عددًا من الوظائف التي تسمح بالارتباط والتواء الصور.

  • الوظيفة يرتبط 1 د يمكن استخدامها لحساب الارتباط أحادي البعد على طول محور معين
  • الوظيفة ترتبط يسمح بالارتباط متعدد الأبعاد لأي مصفوفة معينة مع النواة المحددة
  • الوظيفة التواء 1 د يمكن استخدامها لحساب الالتواء أحادي البعد على طول محور معين
  • الوظيفة تلتف يسمح بالالتفاف متعدد الأبعاد لأي مصفوفة مع نواة محددة

مثال:

استيراد numpy كـ np من scipy.ndimage استيراد ارتباط 1d 1d ([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 مع تطبيقاتها المختلفة ، يمكنك التسجيل في البث المباشر مع دعم على مدار الساعة طوال أيام الأسبوع وإمكانية الوصول مدى الحياة.