二维数组,或矩阵,是编程中基本的数据结构,尤其对于图像处理、线性代数和游戏开发等任务至关重要。虽然Python不像某些语言(例如C++)那样具有内置的二维数组类型,但它提供了几种高效且优雅的创建和操作二维数组的方法。本文将探讨三种常用的方法:列表推导式、嵌套循环和强大的NumPy库。
目录
列表推导式方法
列表推导式提供了一种简洁且Pythonic的创建二维数组的方法,尤其在用公式或模式生成的数值进行初始化时非常有用。它使用嵌套列表推导式,外层循环处理行,内层循环处理列。
# 3x4数组,填充为零
rows = 3
cols = 4
array_2d = [[0 for _ in range(cols)] for _ in range(rows)]
print(array_2d) # 输出: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
# 3x3数组,数值基于行和列索引
array_2d = [[i + j for j in range(3)] for i in range(3)]
print(array_2d) # 输出: [[0, 1, 2], [1, 2, 3], [2, 3, 4]]
# 2x2数组,包含随机数 (需要导入random库)
import random
array_2d = [[random.randint(1,10) for _ in range(2)] for _ in range(2)]
print(array_2d) # 输出: (示例) [[7, 2], [9, 5]]
嵌套循环方法
这种方法使用嵌套的for
循环和range
函数,逐个元素迭代行和列来构建数组。它比列表推导式更冗长,但对于初学者更容易理解。
rows = 3
cols = 4
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(0) # 或任何其他初始化值
array_2d.append(row)
print(array_2d) # 输出: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
rows = 3
cols = 3
array_2d = []
for i in range(rows):
row = []
for j in range(cols):
row.append(i*cols + j) #示例:用连续数字填充
array_2d.append(row)
print(array_2d) # 输出: [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
NumPy数组
NumPy是Python中用于数值计算的强大库。它的numpy.array()
函数提供了高效创建和操作多维数组的方法。对于数值运算,NumPy数组的性能比Python列表显著提高。
import numpy as np
# 3x4数组,填充为零
array_2d = np.zeros((3, 4))
print(array_2d)
# 3x3数组,填充为一
array_2d = np.ones((3, 3))
print(array_2d)
# 2x2数组,填充为特定值
array_2d = np.full((2, 2), 7)
print(array_2d)
# 3x3单位矩阵
array_2d = np.eye(3)
print(array_2d)
# 2x3数组,包含0到1之间的随机数
array_2d = np.random.rand(2, 3)
print(array_2d)
# 2x2数组,包含1到10之间的随机整数
array_2d = np.random.randint(1, 11, size=(2,2))
print(array_2d)
NumPy提供了各种函数,用于用不同的值和模式初始化数组,使其成为涉及二维数组的数值计算的首选。