讲解一下Python的二维数组
时间: 2025-06-22 11:14:33 浏览: 7
### Python 中二维数组的概念和用法
在 Python 中,严格意义上并没有像 C 或 Java 那样的原生二维数组概念。然而,通过使用 **列表的列表(list of lists)** 结构可以轻松实现类似的二维数组功能[^1]。此外,借助第三方库 NumPy 可以更高效地处理复杂的矩阵运算。
#### 定义二维数组
以下是几种常见的定义二维数组的方式:
1. **手动初始化**
手动创建一个嵌套列表作为二维数组是最简单直观的方法之一。
```python
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
```
2. **动态生成固定大小的二维数组**
如果需要预先设定好行列数并填充默认值,则可以采用以下两种方法:
- 列表推导式
```python
rows, cols = 3, 4
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
# 输出:[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
```
- 复制列表
这种方式需要注意深浅拷贝问题,如果直接复制可能会导致意外行为[^2]。
```python
matrix = [[0] * cols for _ in range(rows)]
# 输出同上
```
3. **利用 NumPy 库**
对于科学计算场景下推荐使用 NumPy 提供的功能强大的 ndarray 类型替代传统列表表示形式。
```python
import numpy as np
rows, cols = 3, 4
matrix_np = np.zeros((rows, cols), dtype=int)
# 输出:
# array([[0, 0, 0, 0],
# [0, 0, 0, 0],
# [0, 0, 0, 0]])
```
#### 访问与修改元素
访问或修改某个特定位置上的数值非常类似于其他编程语言中的做法——只需指定对应的索引即可完成操作[^4]。
- 获取某一行或者某一列的数据也很方便快捷。
```python
# 假设已知matrix=[[1,2],[3,4]]
first_row = matrix[0] # 返回第一个子列表即第一行 -> [1, 2]
second_column = [row[1] for row in matrix if len(row)>1] # 抽取每行第二个元素构成新列表-> [2, 4]
```
对于基于 NumPy 的情况而言,还可以运用切片技术进一步简化表达逻辑:
```python
import numpy as np
arr=np.arange(10).reshape(2,-1) #[[0 1 2 3 4]
# [5 6 7 8 9]]
print(arr[:,::2]) #选取所有奇数列
#[[0 2 4]
# [5 7 9]]
```
#### 添加/删除行或列
当涉及到增删改查动作时,标准 pythonic 方案可能显得稍微复杂一点;而相比之下 numpty 就要简洁得多.
##### Standard List Approach:
增加一整行至现有表格底部可通过简单的 append 函数达成目标.
```python
new_line=[10,11,12]; existing_table.append(new_line)
```
至于移除则需依赖 del 关键字配合具体坐标参数共同作用才能生效.
```python
del existing_table[-1] #去掉最后一项记录
```
但是针对单独单元格级别的调整就比较麻烦些了...
##### Numpy Enhanced Version:
无论是追加还是裁剪都变得异常简便明了...
```python
import numpy as np
original_array= np.array([[1,2],[3,4]])
extended_version=np.vstack((original_array,np.array([5,6])))
reduced_form=np.delete(original_array,(0),axis=0)
print("Extended:\n", extended_version )
print("\nReduced Form:\n ", reduced_form )
# Extended:
# [[1 2]
# [3 4]
# [5 6]]
# Reduced Form:
# [[3 4]]
```
---
阅读全文
相关推荐

















