一、list方式构造
tmp = [[0] * 2 for _ in range(3)]
# 结果为
[[0, 0], [0, 0], [0, 0]]
这行代码创建了一个包含3个子列表的列表,每个子列表包含2个元素,都是0。这种方法可以用来创建一个二维数组或矩阵。
列表支持操作符,如果一个列表与 ‘ * ’ 号结合使用,能达到重复列表的效果。比如
list_one = [0]
list_two = [0] * 3
print(list_one)
print(list_two)
运行结果:
[0]
[0, 0, 0]
如果想要给一个初始化的值,可以写成:
L = [[0] * n] * m
但是,由于此方法构造的二维数组是对[]*n引用了m次,更改其中一行的值会导致每行的值都被更改。所以,并不是一个可以完全操控到列粒度的二维数组。应用背景极其狭窄,不推荐使用。
因此可以使用
list_three = [[0 for i in range(3)] for j in range(3)]
二、利用numpy包构建二维数组(矩阵)
介绍
NumPy 全称为 Numerical Python,是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用,所以被人们合称为数据分析三剑客。
Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数。
优势
相比 List 对象,NumPy 数组有以下优势:
- 这是因为列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。这样数组计算遍历所有元素,不像列表 list 还需要对内存地址进行查找,从而节省了计算资源。
- Numpy数组能够运用向量化运算来处理整个数组,速度较快;而 Python 的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。
- Numpy 使用了优化过的 C API,运算速度较快。
导入
import numpy as np
举例:
1.创建一个3行4列初始化全为0的二维数组
m = 3
n = 4
mat = np.zeros((m, n))
2.构建一个m行n列的初始化为0-1随机数的二维数组:
m = 3
n = 4
mat = np.random.random((m, n))
3.构建一个m行n列的初始化为1-11步长为2的二维数组:
m = 2
n = 3
mat = np.arange(1, 12, 2).reshape(m, n)
4.创建一维数组
nd_one = np.array([1, 2, 3])
5.创建二维数组
nd_two = np.array([[1, 2, 3], [4, 5, 6]])