Kata Pengantar Penerjemah
Halo semuanya, kita sampai pada bagian terakhir. Selamat membaca!
Navigasi:
Polinomial matematika
NumPy menyediakan metode untuk bekerja dengan polinomial. Dengan melewati daftar akar, Anda bisa mendapatkan koefisien persamaan:
>>> np.poly([-1, 1, 1, 10]) array([ 1, -11, 9, 11, -10])
Di sini, array mengembalikan koefisien yang sesuai dengan persamaan:
.
Operasi sebaliknya juga dapat dilakukan: melewati daftar koefisien, fungsi akar akan mengembalikan semua akar polinomial:
>>> np.roots([1, 4, -2, 3]) array([-4.57974010+0.j , 0.28987005+0.75566815j, 0.28987005-0.75566815j])
Perhatikan bahwa dalam persamaan ini
dua akar imajiner.
Koefisien polinom dapat diintegrasikan. Mari pertimbangkan integrasi
masuk
. Biasanya konstanta C adalah nol:
>>> np.polyint([1, 1, 1, 1]) array([ 0.25 , 0.33333333, 0.5 , 1. , 0. ])
Demikian pula, derivatif dapat diambil:
>>> np.polyder([1./4., 1./3., 1./2., 1., 0.]) array([ 1., 1., 1., 1.])
Fungsi polyadd, polysub, polymul, dan polydiv juga mendukung penjumlahan, pengurangan, perkalian, dan pembagian koefisien polinomial, masing-masing.
Fungsi polyval menggantikan nilai yang diberikan ke polinomial. Pertimbangkan polinomial
di x = 4:
>>> np.polyval([1, -2, 0, 2], 4) 34
Kesimpulannya, fungsi polyfit dapat digunakan untuk memilih (menginterpolasi) polinomial dari urutan tertentu ke sekumpulan nilai:
>>> x = [1, 2, 3, 4, 5, 6, 7, 8] >>> y = [0, 2, 1, 3, 7, 10, 11, 19] >>> np.polyfit(x, y, 2) array([ 0.375 , -0.88690476, 1.05357143])
Array yang dikembalikan adalah daftar koefisien polinomial. Fungsi interpolasi yang lebih canggih dapat ditemukan di SciPy.
Statistik
Selain fungsi rata-rata, var, dan std, NumPy menyediakan beberapa metode lagi untuk bekerja dengan statistik dalam array.
Median dapat ditemukan seperti ini:
>>> a = np.array([1, 4, 3, 8, 9, 2, 3], float) >>> np.median(a) 3.0
Koefisien korelasi untuk beberapa variabel diamati beberapa kali dan dapat ditemukan dari array bentuk: [[x1, x2, ...], [y1, y2, ...], [z1, z2, ...], .. .], di mana x, y, z berbeda yang dapat diamati dan angka menunjukkan jumlah "pengamatan":
>>> a = np.array([[1, 2, 1, 3], [5, 3, 1, 8]], float) >>> c = np.corrcoef(a) >>> c array([[ 1. , 0.72870505], [ 0.72870505, 1. ]])
Kami memiliki array yang dikembalikan c [i, j] yang menyimpan koefisien korelasi untuk ke-1 dan ke-j yang dapat diamati.
Demikian pula, momen kovarians dapat ditemukan:
>>> np.cov(a) array([[ 0.91666667, 2.08333333], [ 2.08333333, 8.91666667]])
Angka acak
Bagian penting dari setiap simulasi adalah kemampuan untuk menghasilkan angka acak. Untuk melakukan ini, kami menggunakan generator nomor pseudo-acak bawaan di NumPy dalam sub-modul acak. Bilangan adalah
pseudo acak, dalam arti bahwa mereka secara deterministik dihasilkan dari nomor benih, tetapi secara acak tersebar dalam kesamaan statistik. Untuk menghasilkan NumPy menggunakan algoritma khusus yang disebut Mersenne Twister.
Anda dapat menentukan elemen pembangkit dari urutan angka acak sebagai berikut:
>>> np.random.seed(293423)
Seed adalah bilangan bulat. Setiap program yang dimulai dengan seed yang sama akan menghasilkan urutan angka yang sama setiap kali. Ini mungkin berguna untuk debugging, tetapi secara umum kami tidak perlu mengatur seed, pada kenyataannya, ketika kami menjalankan program beberapa kali, kami ingin mendapatkan urutan angka yang berbeda setiap kali. Jika perintah ini tidak dijalankan, NumPy secara otomatis memilih seed acak (berdasarkan waktu), yang berbeda setiap kali program dimulai.
Array angka acak dari setengah interval [0,0, 1.0) dapat dihasilkan sebagai berikut:
>>> np.random.rand(5) array([ 0.40783762, 0.7550402 , 0.00919317, 0.01713451, 0.95299583])
Fungsi rand dapat digunakan untuk menghasilkan array dua dimensi, atau fungsi membentuk kembali dapat digunakan:
>>> np.random.rand(2,3) array([[ 0.50431753, 0.48272463, 0.45811345], [ 0.18209476, 0.48631022, 0.49590404]]) >>> np.random.rand(6).reshape((2,3)) array([[ 0.72915152, 0.59423848, 0.25644881], [ 0.75965311, 0.52151819, 0.60084796]])
Untuk menghasilkan angka acak tunggal pada interval [0,0, 1.0):
>>> np.random.random() 0.70110427435769551
Untuk menghasilkan bilangan bulat acak dalam rentang [min, maks), gunakan fungsi randint (min, maks):
>>> np.random.randint(5, 10) 9
Dalam setiap contoh kami, kami menghasilkan angka dari distribusi seragam yang berkelanjutan. NumPy juga termasuk generator untuk distribusi lain, seperti: Beta, binomial, chi-square, Dirichlet, eksponensial, Fischer, Gamma, geometris, Gambal, hypergeometrik, Laplace, logistik, lognormal, logaritmik, multinomial, multidimensi normal, binomial negatif, noncentral chi-square, off-center Fischer, normal (Gauss), Pareto, Poisson, power, Rayleigh, Cauchy, mahasiswa, segitiga, Von Mies, Wald, Weibull dan Zipf. Mari kita lihat dua contoh.
Untuk menghasilkan dari distribusi Poisson diskrit di λ = 6.0,
>>> np.random.poisson(6.0) 5
Untuk menghasilkan angka dari distribusi normal (Gaussian) dengan nilai rata-rata μ = 1,5 dan standar deviasi σ = 4.0:
>>> np.random.normal(1.5, 4.0) 0.83636555041094318
Untuk mendapatkan angka dari distribusi normal (μ = 0, σ = 1), tanpa menentukan argumen:
>>> np.random.normal() 0.27548716940682932
Untuk menghasilkan beberapa nilai, gunakan argumen ukuran:
>>> np.random.normal(size=5) array([-1.67215088, 0.65813053, -0.70150614, 0.91452499, 0.71440557])
Modul untuk menghasilkan angka acak juga dapat digunakan untuk mendistribusikan nilai secara acak dalam daftar. Ini bisa bermanfaat jika kita ingin mendistribusikan nilai secara acak dalam daftar:
>>> l = range(10) >>> l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> np.random.shuffle(l) >>> l [4, 9, 5, 0, 2, 7, 6, 8, 1, 3]
Perhatikan bahwa fungsi acak mengubah array yang ada dan tidak mengembalikan yang baru.
Beberapa informasi tambahan
NumPy mencakup lebih banyak fitur yang belum kami sebutkan di sini. Secara khusus, ini adalah fungsi untuk bekerja dengan transformasi Fourier diskrit, operasi yang lebih kompleks dalam aljabar linier, menguji array untuk ukuran / dimensi / tipe, membelah dan menghubungkan array, histogram, membuat array dari data apa pun dengan cara yang berbeda, membuat dan mengoperasikan array grid , dengan nilai khusus (NaN, Inf), operasi-set, pembuatan berbagai jenis matriks khusus dan perhitungan fungsi matematika khusus (Misalnya: fungsi Bessel). Anda juga dapat melihat
dokumentasi NumPy untuk detail yang lebih tepat.
Modul SciPy
SciPy memperluas fungsionalitas NumPy dengan sangat baik. Kami tidak akan membicarakan detailnya, tetapi mempertimbangkan beberapa kemungkinannya. Sebagian besar fungsi SciPy tersedia setelah mengimpor modul:
>>> import scipy
Fungsi bantuan memberikan informasi berguna tentang SciPy:
>>> help(scipy)
Help on package scipy:
NAME
scipy
FILE
c:\python25\lib\site-packages\scipy\__init__.py
DESCRIPTION
SciPy --- A scientific computing package for Python
===================================================
Documentation is available in the docstrings and
online at http://docs.scipy.org.
Contents
--------
SciPy imports all the functions from the NumPy namespace, and in
addition provides:
Available subpackages
---------------------
odr --- Orthogonal Distance Regression [*]
misc --- Various utilities that don't have
another home.sparse.linalg.eigen.arpack --- Eigenvalue solver using iterative methods. [*]
fftpack --- Discrete Fourier Transform algorithms[*]
io --- Data input and output [*]
sparse.linalg.eigen.lobpcg --- Locally Optimal Block Preconditioned Conjugate Gradient Method (LOBPCG) [*]
special --- Airy Functions [*]
lib.blas --- Wrappers to BLAS library [*]
sparse.linalg.eigen --- Sparse Eigenvalue Solvers [*]
stats --- Statistical Functions [*]
lib --- Python wrappers to external libraries [*]
lib.lapack --- Wrappers to LAPACK library [*]
maxentropy --- Routines for fitting maximum entropymodels [*]
integrate --- Integration routines [*]
ndimage --- n-dimensional image package [*]
linalg --- Linear algebra routines [*]
spatial --- Spatial data structures and algorithms[*]
interpolate --- Interpolation Tools [*]
sparse.linalg --- Sparse Linear Algebra [*]
sparse.linalg.dsolve.umfpack --- :Interface to the UMFPACK library: [*]
sparse.linalg.dsolve --- Linear Solvers [*]
optimize --- Optimization Tools [*]
cluster --- Vector Quantization / Kmeans [*]
signal --- Signal Processing Tools [*]
sparse --- Sparse Matrices [*]
[*] - using a package requires explicit import (see pkgload)
...
Perhatikan bahwa beberapa sub-modul secara langsung memerlukan impor tambahan, yang ditandai dengan tanda bintang:
>>> import scipy >>> import scipy.interpolate
Fungsi-fungsi dalam setiap modul didokumentasikan dengan baik dalam dokumen internal dan dalam dokumentasi resmi. Sebagian besar dari mereka secara langsung menyediakan fungsi untuk bekerja dengan algoritma numerik dan sangat mudah digunakan. Dengan demikian, SciPy dapat menghemat banyak waktu dalam perhitungan ilmiah, karena Ini menyediakan fungsi yang sudah ditulis dan diuji.
Kami tidak akan mempertimbangkan SciPy secara detail, tetapi tabel di bawah ini akan mencakup beberapa fitur-fiturnya:
Modul | Untuk apa digunakan |
---|
scipy.constants | Set konstanta matematika dan fisik |
scipy.special | Banyak fungsi khusus untuk fisika matematika, seperti: Airy, elips, Bessel, gamma, beta, hypergeometric, silinder parabola, Mathieu, gelombang bola, Struve, Kelvin. |
scipy.integrate | Fungsi untuk bekerja dengan integrasi numerik menggunakan metode trapesium, Simpson, Romberg dan lainnya. Juga menyediakan metode untuk bekerja dengan persamaan diferensial lengkap. |
scipy.optimize | Metode standar tinggi / rendah untuk bekerja dengan fungsi pengguna umum. Algoritma termasuk: Nelder - Mead, Pull ( Powell's ), gradien konjugat, Bruden - Fletcher - Goldfarb - Channo, kuadrat terkecil, optimasi bersyarat, simulasi anil, pencarian penuh, Brent, Newton, pembagian dua bagian, Broyden, Anderson, dan pencarian linier. |
scipy.linalg | Fungsionalitas yang lebih luas untuk bekerja dengan aljabar linier daripada di NumPy. Memberikan lebih banyak opsi untuk menggunakan fungsi khusus dan cepat untuk objek tertentu (Misalnya: matriks tiga diagonal). Metode yang disertakan: mencari matriks non-degenerasi, mencari determinan, solusi sistem linear persamaan, perhitungan norma dan matriks pseudoinverse, dekomposisi spektral, dekomposisi singular, dekomposisi LU, dekomposisi LU, dekomposisi QR, dekomposisi QR, dekomposisi Schur, dan banyak operasi matematika lainnya untuk bekerja dengan matriks. |
scipy.sparse | Fungsi untuk bekerja dengan matriks jarang yang besar |
Scipy.interpolate | Metode dan kelas untuk menginterpolasi objek yang dapat digunakan untuk data numerik diskrit. Linear dan spline ( Note translator: representasi matematis dari kurva halus ) interpolasi tersedia untuk set data satu dan dua dimensi. |
scipy.fftpack | Metode untuk memproses transformasi Fourier. |
scipy.signal | Metode untuk memproses sinyal, misalnya: konvolusi fungsi, korelasi, transformasi Fourier diskrit, pemulusan B-spline, pemfilteran, dll., Dll. |
scipy.stats | Perpustakaan besar fungsi statistik dan distribusi untuk bekerja dengan set data. |
Sekelompok besar pengembang terus mengembangkan fitur SciPy baru. Pendekatan praktis yang baik adalah ini: jika Anda berpikir untuk mengimplementasikan fungsi numerik dan metode apa pun dalam kode Anda, pertama-tama Anda dapat melihat dokumentasi SciPy asli. Ada kemungkinan seseorang telah menerapkan dan berkontribusi pada SciPy.
Kata penutup
Seri artikel kami telah berakhir. Terima kasih kepada semua orang yang membaca dan meluangkan waktu. Saya juga berharap bahwa Anda telah mengeluarkan beberapa informasi yang berguna dan mempelajari sesuatu yang baru. Terus kembangkan dan pelajari hal-hal baru! Sampai ketemu lagi.