編程學習網 > 編程語言 > Python > Python科學計算庫SciPy教程
2023
08-17

Python科學計算庫SciPy教程

目前在國內Matlab仍然非常流行,Matlab使用的數據格式通常是.mat文件。對此,Scipy.io包提供了可以導入導出.mat文件的接口,這樣,Python和Matlab的協同工作就變得非常容易了。示例代碼如下所示:

from scipy import io as spio
import numpy as np
a=np.arange(10)
spio.savemat('a.mat',{'a':a})
data = spio.loadmat('a.mat', struct_as_record=True)
data['a']

Out:
array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])

02 線性代數運算
在SciPy中,線性代數運算使用的是scipy.linalg。
scipy.linalg.det()可用于計算矩陣的行列式,示例代碼如下:

from scipy import linalg
m=np.array([[1,2],[3,4]])
linalg.det(m)

Out:

-2.0

03 優化和擬合
求解最大值最小值之類的問題即為優化問題,在SciPy中,scipy.optimization提供了最小值、曲線擬合等算法。示例代碼如下:
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt

def f(x):
    return x**2+20*np.sin(x)

x=np.arange(-10,10,0.1)

plt.plot(x,f(x))

由圖3-1中可以看到,對應的最小值的橫坐標大約是-2。
我們可以用暴力窮舉法來計算最小值,代碼如下:
grid=(-10,10,0.1)
x_min=optimize.brute(f,(grid,))
x_min
Out:
array([-1.42754883])

當然,當數據量較大的時候,窮舉法速度會很慢。為了提高效率,scipy.optimize也提供了諸如模擬退火等優化算法,這里不再多講。

以上就是Python科學計算庫SciPy教程的詳細內容,想要了解更多Python教程歡迎持續關注編程學習網。

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取