SciPy trong Python là một thư viện nguồn mở được sử dụng để giải các bài toán, khoa học, kỹ thuật và kỹ thuật. Nó cho phép người dùng thao tác dữ liệu và trực quan hóa dữ liệu bằng một loạt các lệnh Python cấp cao. SciPy được xây dựng trên phần mở rộng Python NumPy. SciPy cũng được phát âm là “Sigh Pi. ”
Các gói phụ của SciPy
- Nhập/xuất tệp – scipy. io
- Chức năng đặc biệt – scipy. đặc biệt
- Phép Toán Đại Số Tuyến Tính – scipy. linalg
- Nội suy – scipy. nội suy
- Tối ưu hóa và phù hợp – scipy. tối ưu hóa
- Thống kê và số ngẫu nhiên – scipy. số liệu thống kê
- Tích hợp số – scipy. tích hợp
- Biến đổi Fourier nhanh – scipy. fftpack
- Xử lý tín hiệu – scipy. dấu hiệu
- Thao tác hình ảnh – scipy. hình ảnh
Trong hướng dẫn Python SciPy này, bạn sẽ học
- SciPy là gì?
- Tại sao nên sử dụng SciPy
- Numpy VS SciPy
- SciPy – Cài đặt và Thiết lập Môi trường
- Gói đầu vào / đầu ra tệp
- Gói chức năng đặc biệt
- Đại số tuyến tính với SciPy
- Biến đổi Fourier rời rạc – scipy. fftpack
- Tối ưu hóa và Phù hợp trong SciPy – scipy. tối ưu hóa
- Thuật toán Nelder –Mead
- Xử lý hình ảnh với SciPy – scipy. hình ảnh
Tại sao nên sử dụng SciPy
- SciPy chứa nhiều gói phụ giúp giải quyết vấn đề phổ biến nhất liên quan đến Tính toán khoa học
- Gói SciPy trong Python là thư viện Khoa học được sử dụng nhiều nhất chỉ đứng sau Thư viện Khoa học GNU cho C/C++ hoặc Matlab's
- Dễ sử dụng và dễ hiểu cũng như khả năng tính toán nhanh
- Nó có thể hoạt động trên một mảng thư viện NumPy
Numpy VS SciPy
Nặng nề
- Numpy được viết bằng C và sử dụng để tính toán hoặc tính toán số
- Nó nhanh hơn các Thư viện Python khác
- Numpy là thư viện hữu ích nhất cho Khoa học dữ liệu để thực hiện các tính toán cơ bản
- Numpy không chứa gì ngoài kiểu dữ liệu mảng thực hiện thao tác cơ bản nhất như sắp xếp, định hình, lập chỉ mục, v.v.
khoa học viễn tưởng
- SciPy được xây dựng trên NumPy
- Mô-đun SciPy trong Python là phiên bản đầy đủ tính năng của Đại số tuyến tính trong khi Numpy chỉ chứa một số tính năng
- Hầu hết các tính năng Khoa học dữ liệu mới đều có sẵn trong Scipy thay vì Numpy
SciPy – Cài đặt và Thiết lập Môi trường
Bạn cũng có thể cài đặt SciPy trong Windows qua pip
Python3 -m pip install --user numpy scipy
Cài đặt Scipy trên Linux
sudo apt-get install python-scipy python-numpy
Cài đặt SciPy trên máy Mac
sudo port install py35-scipy py35-numpy
Trước khi bắt đầu học SciPy Python, bạn cần biết chức năng cơ bản cũng như các loại mảng khác nhau của NumPy
Cách tiêu chuẩn để nhập các mô-đun SciPy và Numpy
from scipy import special #same for other modules import numpy as np
Gói đầu vào / đầu ra tệp
Scipy, gói I/O, có nhiều chức năng để làm việc với các định dạng tệp khác nhau là Matlab, Arff, Wave, Matrix Market, IDL, NetCDF, TXT, CSV và định dạng nhị phân
Chúng ta hãy lấy một ví dụ về định dạng tệp Python SciPy thường được sử dụng trong 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']
đầu ra
array[[[ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.], [ 1., 1., 1., 1.]]]
Giải thích mã
- Dòng 1 & 2. Nhập thư viện SciPy thiết yếu bằng Python với gói I/O và Numpy
- dòng 3. Tạo mảng 4 x 4, một chiều
- dòng 4. Lưu trữ mảng trong ví dụ. tập tin mat
- dòng 5. Lấy dữ liệu từ ví dụ. tập tin mat
- dòng 6. đầu ra in
Gói chức năng đặc biệt
- scipy. gói đặc biệt chứa nhiều chức năng của vật lý toán học
- Chức năng đặc biệt của SciPy bao gồm Căn bậc ba, Hàm mũ, Tổng nhật ký hàm mũ, Lambert, Hoán vị và Tổ hợp, Gamma, Bessel, siêu hình học, Kelvin, beta, hình trụ parabol, Hàm mũ lỗi tương đối, v.v.
- Đối với một dòng mô tả tất cả các chức năng này, hãy nhập bảng điều khiển Python
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.
Hàm căn bậc ba
Hàm căn bậc ba tìm căn bậc ba của các giá trị
cú pháp
scipy.special.cbrt[x]
Ví dụ
________số 8đầu ra. mảng[[3. , 4. ]]
Hàm số mũ
Hàm số mũ tính toán phần tử 10**x
Ví dụ
from scipy.special import exp10 #define exp10 function and pass value in its exp = exp10[[1,10]] print[exp]
đầu ra. [1. đ+01 1. e+10]
Hoán vị & Tổ hợp
SciPy cũng cung cấp chức năng tính toán Hoán vị và Tổ hợp
Kết hợp – scipy. đặc biệt. lược[N,k]
Ví dụ
sudo apt-get install python-scipy python-numpy0
đầu ra. 15. 0
Hoán vị –
sudo apt-get install python-scipy python-numpy1
Ví dụ
sudo apt-get install python-scipy python-numpy2
đầu ra. 20
Nhật ký hàm số mũ
Nhật ký Tổng Hàm mũ tính toán nhật ký của phần tử đầu vào tổng hàm mũ
cú pháp
sudo apt-get install python-scipy python-numpy3
Chức năng Bessel
Hàm tính số nguyên thứ n
cú pháp
sudo apt-get install python-scipy python-numpy4
Đại số tuyến tính với SciPy
- Đại số tuyến tính của SciPy là một triển khai của thư viện BLAS và ATLAS LAPACK
- Hiệu suất của Đại số tuyến tính rất nhanh so với BLAS và LAPACK
- Thủ tục đại số tuyến tính chấp nhận đối tượng mảng hai chiều và đầu ra cũng là một mảng hai chiều
Bây giờ hãy làm một số thử nghiệm với scipy. linalg,
Tính định thức của ma trận hai chiều,
sudo apt-get install python-scipy python-numpy5
đầu ra. -7. 0
Ma trận nghịch đảo –
sudo apt-get install python-scipy python-numpy6
Ma trận nghịch đảo của scipy tính nghịch đảo của bất kỳ ma trận vuông nào
Hãy xem nào,
sudo apt-get install python-scipy python-numpy7
đầu ra
sudo apt-get install python-scipy python-numpy8
Giá trị riêng và vectơ riêng
scipy. linalg. eig[]
- Vấn đề phổ biến nhất trong đại số tuyến tính là giá trị riêng và véc tơ riêng có thể dễ dàng giải quyết bằng hàm eig[]
- Bây giờ chúng ta hãy tìm Giá trị riêng của [X] và véc tơ riêng tương ứng của ma trận vuông hai chiều
Ví dụ
sudo apt-get install python-scipy python-numpy9
đầu ra
sudo port install py35-scipy py35-numpy0
Biến đổi Fourier rời rạc – scipy. fftpack
- DFT là một kỹ thuật toán học được sử dụng để chuyển đổi dữ liệu không gian thành dữ liệu tần số
- FFT [Chuyển đổi Fourier nhanh] là một thuật toán để tính toán DFT
- FFT được áp dụng cho một mảng nhiều chiều
- Tần số xác định số lượng tín hiệu hoặc bước sóng trong khoảng thời gian cụ thể
Ví dụ. Bắt sóng và hiển thị bằng thư viện Matplotlib. chúng ta lấy ví dụ hàm tuần hoàn đơn giản của sin[20 × 2πt]
sudo port install py35-scipy py35-numpy1
đầu ra
bạn có thể thấy điều này. Tần số là 5 Hz và tín hiệu của nó lặp lại sau 1/5 giây – nó được gọi là một khoảng thời gian cụ thể
Bây giờ chúng ta hãy sử dụng sóng hình sin này với sự trợ giúp của ứng dụng DFT
sudo port install py35-scipy py35-numpy2
đầu ra
- Bạn có thể thấy rõ đầu ra là mảng một chiều
- Đầu vào chứa các giá trị phức tạp bằng 0 trừ hai điểm
- Trong ví dụ về DFT, chúng tôi hình dung độ lớn của tín hiệu
Tối ưu hóa và Phù hợp trong SciPy – scipy. tối ưu hóa
- Tối ưu hóa cung cấp một thuật toán hữu ích để giảm thiểu khớp đường cong, đa chiều hoặc vô hướng và khớp gốc
- Hãy lấy một ví dụ về Hàm vô hướng, để tìm hàm vô hướng tối thiểu
sudo port install py35-scipy py35-numpy3
đầu ra
Đã kết thúc tối ưu hóa thành công
Giá trị chức năng hiện tại. -23. 241676
lặp đi lặp lại. 4
đánh giá chức năng. 18
đánh giá độ dốc. 6
mảng [[-1. 67096375]]
- Trong ví dụ này, tối ưu hóa được thực hiện với sự trợ giúp của thuật toán giảm độ dốc từ điểm ban đầu
- Nhưng vấn đề có thể xảy ra là cực tiểu cục bộ thay vì cực tiểu toàn cầu. Nếu chúng tôi không tìm thấy một hàng xóm của cực tiểu toàn cầu, thì chúng tôi cần áp dụng tối ưu hóa toàn cầu và tìm hàm cực tiểu toàn cầu được sử dụng như bashopping[] kết hợp trình tối ưu hóa cục bộ
tối ưu hóa. bashopping[hàm, 0]
đầu ra
sudo port install py35-scipy py35-numpy4
Thuật toán Nelder –Mead
- Thuật toán Nelder-Mead chọn thông qua tham số phương thức
- Nó cung cấp cách giảm thiểu đơn giản nhất cho chức năng hoạt động công bằng
- Thuật toán Nelder – Mead không được sử dụng để đánh giá độ dốc vì có thể mất nhiều thời gian hơn để tìm giải pháp
sudo port install py35-scipy py35-numpy5
đầu ra
sudo port install py35-scipy py35-numpy6
Xử lý hình ảnh với SciPy – scipy. hình ảnh
- scipy. ndimage là một mô hình con của SciPy, chủ yếu được sử dụng để thực hiện một thao tác liên quan đến hình ảnh
- ndimage có nghĩa là hình ảnh chiều “n”
- Xử lý hình ảnh SciPy cung cấp phép biến đổi hình học [xoay, cắt, lật], lọc hình ảnh [sắc nét và khử mũi], hình ảnh hiển thị, phân đoạn hình ảnh, phân loại và trích xuất tính năng
- Gói MISC trong SciPy chứa các hình ảnh dựng sẵn có thể được sử dụng để thực hiện tác vụ thao tác hình ảnh
Ví dụ. Hãy lấy một ví dụ biến đổi hình học của hình ảnh
sudo port install py35-scipy py35-numpy7
đầu ra
Bây giờ chúng tôi Lật xuống hình ảnh hiện tại
sudo port install py35-scipy py35-numpy8
đầu ra
Ví dụ. Xoay hình ảnh bằng scipy,
sudo port install py35-scipy py35-numpy9
đầu ra
Tích hợp với scipy – Tích hợp số
- Khi chúng tôi tích hợp bất kỳ chức năng nào mà không thể tích hợp phân tích, chúng tôi cần chuyển sang tích hợp số
- SciPy cung cấp chức năng tích hợp chức năng với tích hợp số
- scipy. thư viện tích hợp có các quy tắc tích hợp đơn, đôi, ba, nhiều, Gaussian quadrate, Romberg, Trapezoidal và Simpson
Ví dụ. Bây giờ hãy lấy một ví dụ về Tích hợp đơn lẻ
Ở đây a là giới hạn trên và b là giới hạn dưới
from scipy import special #same for other modules import numpy as np0
đầu ra
[0. 33333333333333337, 3. 700743415417189e-15]
Ở đây hàm trả về hai giá trị, trong đó giá trị đầu tiên là tích phân và giá trị thứ hai là lỗi ước tính trong tích phân
Ví dụ. Bây giờ hãy lấy một ví dụ SciPy về tích hợp kép. Chúng tôi tìm thấy sự tích hợp kép của phương trình sau đây,