scipy


官网

github

scipy 是一个用于科学计算的 Python 库,建立在 NumPy 之上,提供了大量的数学、科学和工程计算工具。scipy 包含了许多子模块,每个子模块都专注于特定类型的科学计算任务。以下是一些主要的子模块及其功能:

主要子模块

  1. scipy.integrate:数值积分和微分方程求解。
  2. quad:定积分计算。
  3. odeint:常微分方程(ODE)求解。
  4. solve_ivp:常微分方程初值问题求解。

  5. scipy.optimize:优化和拟合。

  6. minimize:最小化标量函数。
  7. root:求解非线性方程组。
  8. curve_fit:非线性最小二乘拟合。

  9. scipy.interpolate:插值。

  10. interp1d:一维插值。
  11. griddata:多维插值。

  12. scipy.linalg:线性代数。

  13. solve:解线性方程组。
  14. eig:计算特征值和特征向量。
  15. inv:矩阵求逆。

  16. scipy.signal:信号处理。

  17. find_peaks:查找峰值。
  18. fft:快速傅里叶变换。
  19. convolve:卷积。

  20. scipy.stats:统计。

  21. norm:正态分布。
  22. ttest_ind:独立样本 t 检验。
  23. describe:描述性统计。

  24. scipy.sparse:稀疏矩阵。

  25. csr_matrix:压缩稀疏行矩阵。
  26. csc_matrix:压缩稀疏列矩阵。

  27. scipy.special:特殊函数。

  28. gamma:伽马函数。
  29. erf:误差函数。

示例代码

以下是一些常见的 scipy 子模块的使用示例:

数值积分

from scipy.integrate import quad
import numpy as np

def integrand(x):
    return x**2

result, error = quad(integrand, 0, 1)
print(f"Integral result: {result}, Error estimate: {error}")

最小化标量函数

from scipy.optimize import minimize

def objective(x):
    return x[0]**2 + x[1]**2

result = minimize(objective, [1, 1])
print(f"Optimal solution: {result.x}, Function value: {result.fun}")

插值

from scipy.interpolate import interp1d
import numpy as np

x = np.linspace(0, 10, 10)
y = np.sin(x)

f = interp1d(x, y, kind='cubic')
x_new = np.linspace(0, 10, 100)
y_new = f(x_new)

import matplotlib.pyplot as plt
plt.plot(x, y, 'o', x_new, y_new, '-')
plt.show()

信号处理

from scipy.signal import find_peaks
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)
y = np.sin(x) + np.random.normal(0, 0.1, 1000)

peaks, _ = find_peaks(y, height=0.5, distance=10, prominence=0.3)

plt.plot(x, y, label='Data')
plt.plot(x[peaks], y[peaks], 'x', color='red', label='Peaks')
plt.axhline(y=0.5, color='gray', linestyle='--', label='Height Threshold')
plt.legend()
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.title('Finding Peaks in Data')
plt.show()

统计

from scipy.stats import norm, ttest_ind
import numpy as np

# 生成正态分布数据
data1 = norm.rvs(loc=0, scale=1, size=100)
data2 = norm.rvs(loc=0.5, scale=1, size=100)

# 独立样本 t 检验
t_stat, p_value = ttest_ind(data1, data2)
print(f"t-statistic: {t_stat}, p-value: {p_value}")

安装

如果你还没有安装 scipy,可以使用以下命令进行安装:

pip install scipy

文档

scipy 的官方文档非常详细,包含了各个子模块的详细说明和示例。你可以访问 SciPy 官方文档 获取更多信息。

希望这些信息对你有所帮助!如果你有任何具体的问题或需要进一步的帮助,请随时告诉我。