Numpy 中的线形代数模块

主要为将来的张量(Tensor)计算打基础

NumPy 包包含numpy.linalg模块,提供线性代数所需的所有功能,主要功能有下

dot                     两个数组的点积
vdot                    两个向量的点积
inner                   两个数组的内积
matmul                  两个数组的矩阵积

1 点积 numpy.dot()
对于一维数组(向量),相当于内积;对于二维数组(矩阵),相当于矩阵乘法;对于多维数组(张量),它是a的最后一个轴上的和与b的倒数第二个轴的乘积。

import numpy as np

a = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
b = np.array([[[2,4],[3,6]],[[4,8],[5,10]]])
c = np.dot(a,b)

print(a)
print(b)
print()
print(c)
# 输出
[[[1 2]
  [3 4]]

 
### Numpy 线性代数基础 NumpyPython 科学计算的核心库之一,提供了丰富的功能支持线性代数运算。以下是关于 Numpy 中与线性代数相关的基础知识和常见操作。 #### 1. 数组与矩阵 Numpy 的核心数据结构是 `ndarray`,可以用来表示向量、矩阵甚至更高维度的数据。在线性代数中,通常会涉及一维数组(向量)、二维数组(矩阵)以及它们之间的运算[^1]。 - **创建数组** 使用 `np.array()` 可以轻松创建一个 N 维数组。 ```python import numpy as np vector = np.array([1, 2, 3]) # 创建一维数组(向量) matrix = np.array([[1, 2], [3, 4]]) # 创建二维数组(矩阵) ``` #### 2. 向量与矩阵的点/内 通过 `numpy.dot()` 函数或者 `@` 运算符,可以完成向量间的内或矩阵乘法的操作[^2][^3]。 - **向量内** 如果输入是一维数组,则计算其内。 ```python v1 = np.array([1, 2]) v2 = np.array([3, 4]) result = np.dot(v1, v2) # 或者使用 v1 @ v2 print(result) # 输出:1*3 + 2*4 = 11 ``` - **矩阵乘法** 对于二维数组,执行标准的矩阵乘法规则。 ```python A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) C = np.dot(A, B) # 或者 A @ B print(C) # 输出 [[19 22] # [43 50]] ``` #### 3. 方阵的相关操作 Numpy 提供了专门处理方阵的功能集合,在子模块 `numpy.linalg` 下定义了许多常用的线性代数方法[^5]。 - **求解行列式 (Determinant)** 行列式的值可以通过 `np.linalg.det()` 来获取。 ```python M = np.array([[1, 2], [3, 4]]) determinant = np.linalg.det(M) print(determinant) # 输出 -2.0 ``` - **求逆矩阵** 若矩阵可逆,利用 `np.linalg.inv()` 能够得到它的逆矩阵。 ```python inverse_matrix = np.linalg.inv(M) print(inverse_matrix) # 输出 [[-2. 1. ] # [ 1.5 -0.5]] ``` - **特征值与特征向量** 特征值及其对应的特征向量由 `np.linalg.eig()` 返回。 ```python eigenvalues, eigenvectors = np.linalg.eig(M) print(eigenvalues) # 特征值 print(eigenvectors) # 特征向量组成的矩阵 ``` #### 4. 应用实例——简单线性回归模型 作为实际应用的一个例子,下面展示如何基于 Numpy 实现简单的线性回归分析[^4]。 ```python import numpy as np # 数据准备 n_samples, n_features = 100, 3 X = np.random.rand(n_samples, n_features) y = np.random.rand(n_samples) # 参数估计 weights = np.linalg.inv(X.T @ X) @ X.T @ y bias = np.mean(y - X @ weights) print(f"Weights: {weights}") print(f"Bias: {bias}") ``` 此代码片段展示了如何运用 Numpy 完成最小二乘法拟合过程中的关键步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值