在前一篇文中,我们介绍了NumPy的基本概念和一些入门示例。接下来,我们将深入探讨NumPy的高级功能,包括线性代数、随机数生成、概率统计和数据分析等方面。
一、线性代数
NumPy在线性代数方面提供了丰富的操作,如下所示:
1. 矩阵乘法:使用 dot() 函数计算两个矩阵的乘积。
A = np.array([[1, 2], [3, 4]])B = np.array([5, 6]) C = A @ Bprint("矩阵乘法:", C)
2. 矩阵求逆:使用 inv() 函数计算矩阵的逆矩阵。
A = np.array([[1, 2], [3, 4]]) A_inv = np.linalg.inv(A)print("矩阵求逆:", A_inv)
3. 特征值和特征向量:使用eig() 函数计算矩阵的特征值和特征向量。
A = np.array([[1, 2], [3, 4]]) eigvals, eigvecs = np.linalg.eig(A)print("特征值:", eigvals)print("特征向量:", eigvecs)
二、随机数生成
NumPy提供了多种随机数生成器,如下所示:
1. 标准正态分布:使用np.random.normal() 函数生成标准正态分布的随机数。
mean = 0std_dev = 1size = 10 random_numbers = np.random.normal(mean, std_dev, size)print("标准正态分布:", random_numbers)
2. 均匀分布:使用np.random.uniform()函数生成均匀分布的随机数。
low = 1high = 5size = 10 random_numbers = np.random.uniform(low, high, size)print("均匀分布:", random_numbers)
3. 指数分布:使用np.random.exponential()函数生成指数分布的随机数。
scale = 1size = 10 random_numbers = np.random.exponential(scale, size)print("指数分布:", random_numbers)
三、概率统计
NumPy在概率统计方面提供了丰富的计算函数,如下所示:
1.均值:使用mean() 函数计算数组的均值。
arr = np.array([1, 2, 3, 4, 5])mean = np.mean(arr)print("均值:", mean)
2.标准差:使用std() 函数计算数组的标准差。
arr = np.array([1, 2, 3, 4, 5])std = np.std(arr)print("标准差:", std)
3. 方差:使用var() 函数计算数组的方差。
arr = np.array([1, 2, 3, 4, 5])var = np.var(arr)print("方差:", var)
四、数据分析
NumPy在数据分析方面提供了许多实用工具,如下所示:
曲线拟合:使用 scipy.interpolate.interp1d() 函数进行一维曲线拟合。
import numpy as npfrom scipy import interpolatex = np.array([0, 1, 2, 3, 4, 5])y = np.array([1, 3, 2, 5, 4, 6]) f =interpolate.interp1d(x, y, kind='cubic')y_new = f(np.linspace(0, 5, 100)) print("曲线拟合:", y_new)