numpy、scipy、pandas、matplotlib的讀書報(bào)告
numpy、scipy、pandas、matplotlib的讀書報(bào)告:
一、基本函數(shù)的用法
numpy
numpy是Python中用于進(jìn)行科學(xué)計(jì)算的基礎(chǔ)模塊,它提供了高效的多維數(shù)組對(duì)象ndarray,以及相關(guān)的數(shù)學(xué)運(yùn)算和線性代數(shù)函數(shù)。numpy的主要功能有:
- 創(chuàng)建和操作多維數(shù)組,如使用
np.array(),np.arange(),np.zeros(),np.ones(),np.reshape()等函數(shù)。 - 對(duì)數(shù)組進(jìn)行索引和切片,如使用
a[i],a[i,j],a[:,j],a[i:j:k]等語(yǔ)法。 - 對(duì)數(shù)組進(jìn)行數(shù)學(xué)運(yùn)算,如使用
+,-,*,/,**,np.dot(),np.sin(),np.exp()等函數(shù)或運(yùn)算符。 - 對(duì)數(shù)組進(jìn)行統(tǒng)計(jì)分析,如使用
np.sum(),np.mean(),np.std(),np.min(),np.max(),np.argmin(),np.argmax()等函數(shù)。 - 對(duì)數(shù)組進(jìn)行排序,如使用
np.sort(),np.argsort(),np.partition(),np.argpartition()等函數(shù)。 - 對(duì)數(shù)組進(jìn)行廣播,即根據(jù)一定的規(guī)則,使得不同形狀的數(shù)組可以進(jìn)行運(yùn)算。
- 對(duì)數(shù)組進(jìn)行線性代數(shù)運(yùn)算,如使用
np.linalg.inv(),np.linalg.det(),np.linalg.eig(),np.linalg.solve()等函數(shù)。
scipy
scipy是基于numpy的一個(gè)科學(xué)計(jì)算庫(kù),它提供了更多的高級(jí)函數(shù)和模塊,涵蓋了優(yōu)化,積分,插值,傅里葉變換,信號(hào)處理,圖像處理,常微分方程等領(lǐng)域。scipy的主要功能有:
- 使用
scipy.optimize模塊進(jìn)行優(yōu)化,如使用scipy.optimize.minimize(),scipy.optimize.curve_fit(),scipy.optimize.root()等函數(shù)。 - 使用
scipy.integrate模塊進(jìn)行積分,如使用scipy.integrate.quad(),scipy.integrate.odeint(),scipy.integrate.solve_ivp()等函數(shù)。 - 使用
scipy.interpolate模塊進(jìn)行插值,如使用scipy.interpolate.interp1d(),scipy.interpolate.splrep(),scipy.interpolate.splev()等函數(shù)。 - 使用
scipy.fftpack模塊進(jìn)行傅里葉變換,如使用scipy.fftpack.fft(),scipy.fftpack.ifft(),scipy.fftpack.fftshift()等函數(shù)。 - 使用
scipy.signal模塊進(jìn)行信號(hào)處理,如使用scipy.signal.convolve(),scipy.signal.correlate(),scipy.signal.firwin(),scipy.signal.lfilter()等函數(shù)。 - 使用
scipy.ndimage模塊進(jìn)行圖像處理,如使用scipy.ndimage.imread(),scipy.ndimage.rotate(),scipy.ndimage.zoom(),scipy.ndimage.filters.gaussian_filter()等函數(shù)。
pandas
pandas是一個(gè)用于數(shù)據(jù)分析和處理的庫(kù),它提供了兩種主要的數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。Series是一維的帶標(biāo)簽的數(shù)組,DataFrame是二維的帶標(biāo)簽的表格。pandas的主要功能有:
- 創(chuàng)建和操作Series和DataFrame,如使用
pd.Series(),pd.DataFrame(),pd.read_csv(),pd.read_excel(),pd.to_csv(),pd.to_excel()等函數(shù)。 - 對(duì)Series和DataFrame進(jìn)行索引和切片,如使用
a.loc[],a.iloc[],a.at[],a.iat[],a[],a[[ ]]等語(yǔ)法。 - 對(duì)Series和DataFrame進(jìn)行數(shù)學(xué)運(yùn)算,如使用
+,-,*,/,**,np.dot(),np.sin(),np.exp()等函數(shù)或運(yùn)算符。 - 對(duì)Series和DataFrame進(jìn)行統(tǒng)計(jì)分析,如使用
a.sum(),a.mean(),a.std(),a.min(),a.max(),a.idxmin(),a.idxmax(),a.describe()等函數(shù)。 - 對(duì)Series和DataFrame進(jìn)行排序,如使用
a.sort_values(),a.sort_index()等函數(shù)。 - 對(duì)Series和DataFrame進(jìn)行清理,轉(zhuǎn)換,合并,重塑,分組,聚合等操作,如使用
a.dropna(),a.fillna(),a.apply(),a.map(),pd.concat(),pd.merge(),a.pivot(),a.stack(),a.unstack(),a.groupby(),a.agg()等函數(shù)。
matplotlib
matplotlib是一個(gè)用于繪制圖形和可視化數(shù)據(jù)的庫(kù),它提供了一個(gè)類似于MATLAB的接口,以及一個(gè)面向?qū)ο蟮慕涌凇atplotlib的主要功能有:
- 創(chuàng)建和操作圖形對(duì)象,如使用
plt.figure(),plt.subplot(),plt.subplots(),plt.axes()等函數(shù)。 - 繪制各種類型的圖形,如使用
plt.plot(),plt.scatter(),plt.bar(),plt.hist(),plt.pie(),plt.boxplot()等函數(shù)。 - 設(shè)置圖形的樣式和屬性,如使用
plt.title(),plt.xlabel(),plt.ylabel(),plt.legend(),plt.grid(),plt.xlim(),plt.ylim(),plt.xticks(),plt.yticks(),plt.text(),plt.annotate()等函數(shù)。 - 保存和顯示圖形,如使用
plt.savefig(),plt.show()等函數(shù)。
二、解決一些具體問題的代碼
numpy
計(jì)算兩個(gè)矩陣的乘積
import numpy as np # 創(chuàng)建兩個(gè)矩陣 a = np.array([[1,2,3],[4,5,6]]) b = np.array([[7,8],[9,10],[11,12]]) # 計(jì)算矩陣乘積 c = np.dot(a,b) # 打印結(jié)果 print(c)
輸出:
[[ 58 64]
[139 154]]
scipy
求解一個(gè)非線性方程組
import scipy.optimize as opt # 定義方程組的函數(shù) def f(x): return [x[0]**2 + x[1]**2 - 1, x[0] - x[1] + 0.5] # 用fsolve函數(shù)求解,給定初始值 x = opt.fsolve(f, [0,0]) # 打印結(jié)果 print(x)
輸出:
[ 0.78867513 -0.21132487]
pandas
從一個(gè)txt文件中讀取數(shù)據(jù),輸出到excel文件中
import pandas as pd # 讀取txt文檔中的內(nèi)容 with open('B2006data/附件2.txt', 'r') as f: lines = f.readlines() # 跳過(guò)前面幾行 skip_lines = 13 data = [] for line in lines[skip_lines:]: line = line.strip() # 使用split()函數(shù)將每一行的數(shù)據(jù)分割成多個(gè)元素 row = line.split() row_data = [] for element in row: try: # 嘗試將元素轉(zhuǎn)換為浮點(diǎn)數(shù) row_data.append(float(element)) except ValueError: # 如果轉(zhuǎn)換失敗,將元素作為字符串存儲(chǔ) row_data.append(element) # 將每一行的數(shù)據(jù)儲(chǔ)存在嵌套列表中 data.append(row_data) # 將數(shù)據(jù)寫入Excel df = pd.DataFrame(data) df.to_excel('附件2.xlsx', index=False, header=False)
結(jié)果展示:


matplotlib
繪制阻尼曲線
import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family'] = 'SimHei' plt.rcParams['font.sans-serif'] = ['SimHei'] def draw(pcolor, nt_point, nt_text, nt_size): plt.plot(x, y, label='$exp_decay$', color=pcolor, linewidth=3, linestyle="-") plt.plot(x, z, "b--", label='$cos(x^2)$', linewidth=1) plt.xlabel('時(shí)間(s)') plt.ylabel('幅度(mv)') plt.title("阻尼衰減曲線繪制") plt.annotate('$\cos(2 \pi t) \exp(-t)$', xy=nt_point, xytext=nt_text, fontsize=nt_size, arrowprops=dict(arrowstyle='->', connectionstyle="arc3, rad=.1")) def shadow(a, b): ix = (x > a) & (x < b) plt.fill_between(x, y, 0, where=ix, facecolor='grey', alpha=0.25) plt.text(0.5 * (a + b), 0.2, r"$\int_a^b f(x) \mathrmw0obha2h00x$", horizontalalignment='center') def xy_axis(x_start, x_end, y_start, y_end): plt.xlim(x_start, x_end) plt.ylim(y_start, y_end) plt.xticks([np.pi/3, 2 * np.pi/3, 1 * np.pi, 4 * np.pi/3, 5 * np.pi/3], ['$\pi/3$', '$2\pi/3$', '$\pi$', '$4\pi/3$', '$5\pi/3$']) x = np.linspace(0.0, 6.0, 100) y = np.cos(2 * np.pi * x) * np.exp(-x) + 0.8 z = 0.5 * np.cos(x ** 2) + 0.8 note_point, note_text, note_size = (1, np.cos(2*np.pi)*np.exp(-1)+0.8), (1, 1.4), 14 fig = plt.figure(figsize=(8, 6), facecolor="white") plt.subplot(111) draw("red", note_point, note_text, note_size) xy_axis(0, 5, 0, 1.8) shadow(0.8, 3) plt.legend() plt.show()
posted on 2023-12-18 20:22 伊蕾娜。 閱讀(45) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)