【进阶】Scipy的线性代数模块介绍
发布时间: 2024-06-27 21:32:05 阅读量: 69 订阅数: 113
![【进阶】Scipy的线性代数模块介绍](https://img-blog.csdnimg.cn/041ee8c2bfa4457c985aa94731668d73.png)
# 2.1 创建和初始化矩阵和向量
Scipy提供了多种方法来创建和初始化矩阵和向量。最简单的方法是使用`numpy.array()`函数,它接受一个列表、元组或另一个数组作为输入,并将其转换为一个NumPy数组。例如,以下代码创建一个包含数字`[1, 2, 3]`的向量:
```python
import numpy as np
vector = np.array([1, 2, 3])
```
要创建矩阵,可以使用`numpy.array()`函数并提供一个嵌套列表作为输入。例如,以下代码创建一个包含数字`[[1, 2], [3, 4]]`的矩阵:
```python
matrix = np.array([[1, 2], [3, 4]])
```
此外,Scipy还提供了专门的函数来创建具有特定属性的矩阵和向量。例如,`numpy.zeros()`函数创建一个包含指定形状的零的矩阵,而`numpy.ones()`函数创建一个包含指定形状的一的矩阵。
# 2. 矩阵和向量操作
### 2.1 创建和初始化矩阵和向量
**创建矩阵**
使用 `scipy.sparse` 模块创建稀疏矩阵,有两种主要方法:
- **CSR 稀疏矩阵:**使用 `scipy.sparse.csr_matrix` 函数,它以压缩稀疏行格式存储矩阵。
- **CSC 稀疏矩阵:**使用 `scipy.sparse.csc_matrix` 函数,它以压缩稀疏列格式存储矩阵。
**代码块:**
```python
import scipy.sparse as sp
# 创建一个 3x4 的 CSR 稀疏矩阵
csr_matrix = sp.csr_matrix([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0]])
# 创建一个 3x4 的 CSC 稀疏矩阵
csc_matrix = sp.csc_matrix([[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0]])
```
**逻辑分析:**
* `csr_matrix` 和 `csc_matrix` 函数接受一个列表的列表作为参数,其中每个子列表表示矩阵的一行。
* CSR 稀疏矩阵存储行指针、列索引和非零值,而 CSC 稀疏矩阵存储列指针、行索引和非零值。
**创建向量**
使用 `scipy.sparse` 模块创建稀疏向量,有两种主要方法:
- **CSR 稀疏向量:**使用 `scipy.sparse.csr_matrix` 函数,它以压缩稀疏行格式存储向量。
- **CSC 稀疏向量:**使用 `scipy.sparse.csc_matrix` 函数,它以压缩稀疏列格式存储向量。
**代码块:**
```python
# 创建一个 CSR 稀疏向量
csr_vector = sp.csr_matrix([[1], [2], [3]])
# 创建一个 CSC 稀疏向量
csc_vector = sp.csc_matrix([[1], [2], [3]])
```
**逻辑分析:**
* `csr_vector` 和 `csc_vector` 函数接受一个列表作为参数,其中每个元素表示向量的值。
* CSR 稀疏向量存储行指针、列索引和非零值,而 CSC 稀疏向量存储列指针、行索引和非零值。
### 2.2 矩阵和向量的基本运算
**矩阵加法和减法**
使用 `+` 和 `-` 运算符执行矩阵加法和减法。
**代码块:**
```python
# 矩阵加法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
matrix_c = matrix_a + matrix_b
# 矩阵减法
matrix_d = matrix_a - matrix_b
```
**逻辑分析:**
* 矩阵加法和减法逐元素进行。
* 如果矩阵具有相同的大小,则可以执行操作。
**矩阵乘法**
使用 `@` 运算符执行矩阵乘法。
**代码块:**
```python
# 矩阵乘法
matrix_e = np.array([[1, 2], [3, 4]])
matrix_f = np.array([[5, 6], [7, 8]])
matrix_g = matrix_e @ matrix_f
```
**逻辑分析:**
* 矩阵乘法
0
0