Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Tutorial SciPy dengan Python:Apa itu | Contoh Perpustakaan &Fungsi

SciPy dengan Python

SciPy dengan Python adalah perpustakaan sumber terbuka yang digunakan untuk memecahkan masalah matematika, ilmiah, teknik, dan teknis. Ini memungkinkan pengguna untuk memanipulasi data dan memvisualisasikan data menggunakan berbagai perintah Python tingkat tinggi. SciPy dibangun di atas ekstensi NumPy Python. SciPy juga diucapkan sebagai “Sigh Pi.”

Sub-paket SciPy:

Dalam tutorial Python SciPy ini, Anda akan belajar:

Mengapa menggunakan SciPy

Numpy VS SciPy

Numpy:

SciPy:

SciPy – Instalasi dan Pengaturan Lingkungan

Anda juga dapat menginstal SciPy di ​​Windows melalui pip

Python3 -m pip install --user numpy scipy 

Instal Scipy di Linux

sudo apt-get install  python-scipy python-numpy

Instal SciPy di ​​Mac

sudo port install py35-scipy py35-numpy

Sebelum kita mulai belajar SciPy Python, Anda perlu mengetahui fungsionalitas dasar serta berbagai jenis array NumPy

Cara standar untuk mengimpor modul SciPy dan Numpy:

from scipy import special   #same for other modules
import numpy as np

Paket Input / Output File:

Scipy, paket I/O, memiliki berbagai fungsi untuk bekerja dengan format file yang berbeda yaitu Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV dan format biner.

Mari kita ambil satu contoh format file Python SciPy seperti yang biasa digunakan di MatLab:

 import numpy as np
 from scipy import io as sio
 array = np.ones((4, 4))
 sio.savemat('example.mat', {'ar': array}) 
 data = sio.loadmat(‘example.mat', struct_as_record=True)
 data['ar']

Keluaran:

array([[ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.],
           [ 1., 1., 1., 1.]])

Penjelasan Kode

Paket Fungsi Khusus

help(scipy.special)	
Output : 
NAME
    scipy.special

DESCRIPTION
    ========================================
    Special functions (:mod:`scipy.special`)
    ========================================
     
    .. module:: scipy.special
     
    Nearly all of the functions below are universal functions and follow
    broadcasting and automatic array-looping rules. Exceptions are noted.

Fungsi Akar Kubik:

Fungsi Akar Kubik menemukan akar pangkat tiga dari nilai.

Sintaks:

scipy.special.cbrt(x)

Contoh:

from scipy.special import cbrt
#Find cubic root of 27 & 64 using cbrt() function
cb = cbrt([27, 64])
#print value of cb
print(cb)

Keluaran: array([3., 4.])

Fungsi Eksponensial:

Fungsi eksponensial menghitung 10**x elemen-bijaksana.

Contoh:

from scipy.special import exp10
#define exp10 function and pass value in its
exp = exp10([1,10])
print(exp)

Keluaran:[1.e+01 1.e+10]

Permutasi &Kombinasi:

SciPy juga memberikan fungsionalitas untuk menghitung Permutasi dan Kombinasi.

Kombinasi – scipy.special.comb(N,k)

Contoh:

from scipy.special import comb
#find combinations of 5, 2 values using comb(N, k)
com = comb(5, 2, exact = False, repetition=True)
print(com)

Keluaran:15.0

Permutasi –

scipy.special.perm(N,k)

Contoh:

from scipy.special import perm
#find permutation of 5, 2 using perm (N, k) function
per = perm(5, 2, exact = True)
print(per)

Keluaran:20

Fungsi Eksponensial Jumlah Log

Log Sum Eksponensial menghitung log elemen input jumlah eksponensial.

Sintaks :

scipy.special.logsumexp(x) 

Fungsi Bessel

Fungsi kalkulasi orde bilangan bulat ke-n

Sintaks :

scipy.special.jn()

Aljabar Linier dengan SciPy

Sekarang mari kita lakukan beberapa tes dengan scipy.linalg,

Menghitung determinan matriks dua dimensi,

from scipy import linalg
import numpy as np
#define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass values to det() function
linalg.det( two_d_array )

Keluaran: -7.0

Matriks Terbalik –

scipy.linalg.inv()

Matriks Invers Scipy menghitung kebalikan dari matriks persegi apa pun.

Mari kita lihat,

from scipy import linalg
import numpy as np
# define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass value to function inv()
linalg.inv( two_d_array )

Keluaran:

array( [[-0.28571429,  0.71428571],
       [ 0.42857143, -0.57142857]] )

Nilai Eigen dan Vektor Eigen

scipy.linalg.eig()

Contoh

from scipy import linalg
import numpy as np
#define two dimensional array
arr = np.array([[5,4],[6,3]])
#pass value into function
eg_val, eg_vect = linalg.eig(arr)
#get eigenvalues
print(eg_val)
#get eigenvectors
print(eg_vect)

Keluaran:

[ 9.+0.j -1.+0.j] #eigenvalues
 [ [ 0.70710678 -0.5547002 ] #eigenvectors
   [ 0.70710678  0.83205029] ]

Transformasi Fourier Diskrit – scipy.fftpack

Contoh: Ambil gelombang dan tunjukkan menggunakan perpustakaan Matplotlib. kita ambil contoh fungsi periodik sederhana dari sin(20 × 2πt)

%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np 

#Frequency in terms of Hertz
fre  = 5 
#Sample rate
fre_samp = 50
t = np.linspace(0, 2, 2 * fre_samp, endpoint = False )
a = np.sin(fre  * 2 * np.pi * t)
figure, axis = plt.subplots()
axis.plot(t, a)
axis.set_xlabel ('Time (s)')
axis.set_ylabel ('Signal amplitude')
plt.show()

Keluaran:

Anda dapat melihat ini. Frekuensinya 5 Hz dan sinyalnya berulang dalam 1/5 detik – disebut sebagai periode waktu tertentu.

Sekarang mari kita gunakan gelombang sinusoidal ini dengan bantuan aplikasi DFT.

from scipy import fftpack

A = fftpack.fft(a)
frequency = fftpack.fftfreq(len(a)) * fre_samp
figure, axis = plt.subplots()

axis.stem(frequency, np.abs(A))
axis.set_xlabel('Frequency in Hz')
axis.set_ylabel('Frequency Spectrum Magnitude')
axis.set_xlim(-fre_samp / 2, fre_samp/ 2)
axis.set_ylim(-5, 110)
plt.show()

Keluaran:

Optimasi dan Fit di SciPy – scipy.optimize

%matplotlib inline
import matplotlib.pyplot as plt
from scipy import optimize
import numpy as np

def function(a):
       return   a*2 + 20 * np.sin(a)
plt.plot(a, function(a))
plt.show()
#use BFGS algorithm for optimization
optimize.fmin_bfgs(function, 0) 

Keluaran:

Pengoptimalan berhasil dihentikan.

Nilai fungsi saat ini:-23.241676

Iterasi:4

Evaluasi fungsi:18

Evaluasi gradien:6

array([-1.67096375])

optimalkan.basinhopping(fungsi, 0)

Keluaran:

fun: -23.241676238045315
 lowest_optimization_result:
      fun: -23.241676238045315
 hess_inv: array([[0.05023331]])
      jac: array([4.76837158e-07])
  message: 'Optimization terminated successfully.'
     nfev: 15
      nit: 3
     njev: 5
   status: 0
  success: True
        x: array([-1.67096375])
                    message: ['requested number of basinhopping iterations completed successfully']
      minimization_failures: 0
                       nfev: 1530
                        nit: 100
                       njev: 510
               x: array([-1.67096375])

Algoritma Nelder –Mead:

import numpy as np
from scipy.optimize import minimize
#define function f(x)
def f(x):   
    return .4*(1 - x[0])**2
  
optimize.minimize(f, [2, -1], method="Nelder-Mead")

Keluaran:

final_simplex: (array([[ 1.        , -1.27109375],
       [ 1.        , -1.27118835],
       [ 1.        , -1.27113762]]), array([0., 0., 0.]))
           fun: 0.0
       message: 'Optimization terminated successfully.'
          nfev: 147
           nit: 69
        status: 0
       success: True
             x: array([ 1.        , -1.27109375])

Pemrosesan Gambar dengan SciPy – scipy.ndimage

Contoh: Mari kita ambil contoh transformasi geometrik gambar

from scipy import misc
from matplotlib import pyplot as plt
import numpy as np
#get face image of panda from misc package
panda = misc.face()
#plot or show image of face
plt.imshow( panda )
plt.show()

Keluaran:

Sekarang kita Membalik ke bawah gambar saat ini:

#Flip Down using scipy misc.face image  
flip_down = np.flipud(misc.face())
plt.imshow(flip_down)
plt.show()

Keluaran:

Contoh: Rotasi Gambar menggunakan Scipy,

from scipy import ndimage, misc
from matplotlib import pyplot as plt
panda = misc.face()
#rotatation function of scipy for image – image rotated 135 degree
panda_rotate = ndimage.rotate(panda, 135)
plt.imshow(panda_rotate)
plt.show()

Keluaran:

Integrasi dengan Scipy – Integrasi Numerik

Contoh: Sekarang ambil contoh Integrasi Tunggal

Di sini a adalah batas atas dan b adalah batas bawah

from scipy import integrate
# take f(x) function as f
f = lambda x : x**2
#single integration with a = 0 & b = 1  
integration = integrate.quad(f, 0 , 1)
print(integration)

Keluaran:

(0.333333333333333337, 3.700743415417189e-15)

Di sini fungsi mengembalikan dua nilai, di mana nilai pertama adalah integrasi dan nilai kedua adalah kesalahan yang diperkirakan dalam integral.

Contoh:Sekarang ambil contoh SciPy dari integrasi ganda. Kami menemukan integrasi ganda dari persamaan berikut,

from scipy import integrate
import numpy as np
#import square root function from math lib
from math import sqrt
# set  fuction f(x)
f = lambda x, y : 64 *x*y
# lower limit of second integral
p = lambda x : 0
# upper limit of first integral
q = lambda y : sqrt(1 - 2*y**2)
# perform double integration
integration = integrate.dblquad(f , 0 , 2/4,  p, q)
print(integration)

Keluaran:

(3.0, 9.657432734515774e-14)

Anda telah melihat bahwa output di atas sama dengan yang sebelumnya.

Ringkasan

Nama Paket Deskripsi
scipy.io
  • Masukan/keluaran berkas
scipy.special
  • Fungsi Khusus
scipy.linalg
  • Operasi Aljabar Linier
scipy.interpolate
  • Interpolasi
scipy.optimize
  • Pengoptimalan dan kesesuaian
scipy.stats
  • Statistik dan angka acak
scipy.integrate
  • Integrasi Numerik
scipy.fftpack
  • Transformasi Fourier Cepat
scipy.signal
  • Pemrosesan Sinyal
scipy.ndimage
  • Manipulasi gambar –

Python

  1. Pernyataan Python Print():Cara Mencetak dengan Contoh
  2. Python String count() dengan CONTOH
  3. Format String Python() Jelaskan dengan CONTOH
  4. Fungsi Python Lambda dengan CONTOH
  5. Python abs() Fungsi:Contoh Nilai Absolut
  6. Python round() fungsi dengan CONTOH
  7. Python map() berfungsi dengan CONTOH
  8. Python Timeit() dengan Contoh
  9. Hasil dalam Python Tutorial:Generator &Hasil vs Contoh Pengembalian
  10. type() dan isinstance() dengan Python dengan Contoh