numpy中多维数组操作与矩阵计算
发布时间: 2024-05-03 04:50:55 阅读量: 97 订阅数: 42
![numpy中多维数组操作与矩阵计算](https://ask.qcloudimg.com/http-save/8934644/9a6691f4b8fc21ed3d0a04b7014f4f4d.png)
# 1. NumPy简介**
NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了强大的多维数组处理功能,以及丰富的数学函数和线性代数操作。NumPy数组是同构的,这意味着它们只包含一种数据类型。这使得NumPy在处理大型数据集时非常高效,因为它可以避免不必要的类型转换。
NumPy数组可以有多个维度,这使其非常适合表示多维数据,例如图像、矩阵和张量。NumPy还提供了广泛的索引和切片操作,允许用户轻松地访问和操作数组中的特定元素或子集。
# 2. 多维数组操作
### 2.1 创建和初始化多维数组
NumPy中的多维数组称为ndarray,它可以表示具有任意数量维度的数组。创建ndarray有几种方法:
- **使用`np.array()`函数:**
```python
import numpy as np
# 创建一个1维数组
arr_1d = np.array([1, 2, 3])
# 创建一个2维数组
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 创建一个3维数组
arr_3d = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
```
- **使用`np.zeros()`函数:**创建具有指定形状和数据类型的数组,所有元素都初始化为0。
```python
# 创建一个形状为(3, 4)的2维数组,元素类型为float
arr_2d = np.zeros((3, 4), dtype=float)
```
- **使用`np.ones()`函数:**创建具有指定形状和数据类型的数组,所有元素都初始化为1。
```python
# 创建一个形状为(3, 4)的2维数组,元素类型为int
arr_2d = np.ones((3, 4), dtype=int)
```
- **使用`np.full()`函数:**创建具有指定形状和数据类型的数组,所有元素都初始化为给定的值。
```python
# 创建一个形状为(3, 4)的2维数组,元素类型为float,所有元素初始化为3.14
arr_2d = np.full((3, 4), 3.14, dtype=float)
```
### 2.2 数组索引和切片
NumPy数组可以通过索引和切片来访问元素。索引使用方括号`[]`,切片使用冒号`:`.
**索引:**
- **单个索引:**访问数组中特定位置的元素。
```python
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# 访问第2行第3列的元素
element = arr_2d[1, 2] # element = 6
```
- **多重索引:**访问数组中多个位置的元素。
```python
# 访问第1行和第2行的所有元素
rows = arr_2d[1:3] # rows = [[4, 5, 6]]
```
**切片:**
- **单个切片:**访问数组中连续范围的元素。
```python
# 访问第1行所有元素
row = arr_2d[1, :] # row = [4, 5, 6]
```
- **多重切片:**访问数组中多个连续范围的元素。
```python
# 访问第1行和第2行的第2列和第3列的元素
sub_array = arr_2d[1:3, 1:3] # sub_array = [[5, 6]]
```
### 2.3 数组广播和通用函数
**数组广播:**当对不同形状的数组进行操作时,NumPy会自动执行广播,将较小的数组扩展到较大数组的形状。
**通用函数:**NumPy提供了一组内置的通用函数,可以对数组中的元素进行逐元素操作。这些函数会自动广播数组,确保它们具有相同的形状。
```python
import numpy as np
# 创建两个不同形状的数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([[4], [5], [6]])
# 执行加法操作
result = np.add(arr1, arr2)
# result = [[5 6 7]
# [6 7 8]
# [7 8 9]]
```
### 2.4 数组聚合和统计
NumPy提供了多种聚合和统计函数,可以对数组中的元素进行汇总。
**聚合函数:**
- `sum()`: 计算数组中所有元素的总和。
- `mean()`: 计算数组中所有元素的平均值。
- `max()`: 计算数组中所有元素的最大值。
- `min()`: 计算数组中所有元素的最小值。
**统计函数:**
- `std()`: 计算数组中所有元素的标准差。
- `var()`: 计算数组中所有元素的方差。
- `median()`: 计算数组中所有元素的中位数。
- `percentile()`: 计算数组中所有元素的指定百分位数。
```python
import numpy as np
# 创建一个数组
arr = np.array([1, 2, 3, 4, 5])
# 计算数组的总和
total = np.sum(arr) # total = 15
# 计算数组的平均值
mean = np.mean(arr)
```
0
0