啊啊啊啊啊吖

2018-11-09   阅读量: 670

数据分析师 统计学 Python数据分析

Python里的矩阵

扫码加入数据分析学习群

矩阵是一个二维的数据集合。 我们将矩阵表示为列表的列表,每个内部列表的大小都一

样,表示矩阵的一行。如果 A 是一个矩阵,那么 A[i][j] 就表示第 i 行第 j 列的元素。按照

数学表达的惯例,我们通常用大写字母表示矩阵。例如:

A = [[1, 2, 3], # A23

[4, 5, 6]]

B = [[1, 2], # B32

[3, 4],

[5, 6]]

在数学中,矩阵的第一行通常称为“第 1 行”,第一列通常称为“第 1 列”。

而我们需要将矩阵的形式和 Python 的列表统一起来: Python 中的列表从 0

开始索引,所以,我们将矩阵的第一行称为“第 0 行”,将第一列称为“第

0 列”。

基于列表的列表这种表达形式,矩阵 A 具有 len(A) 行和 len(A[0]) 列,我们把这称作它的

形状(shape):

def shape(A):

num_rows = len(A)

num_cols = len(A[0]) if A else 0 # 第一行中元素的个数

return num_rows, num_cols

如果一个矩阵有 n k 列,则可以记为 n×k 矩阵。我们可以把这个 n×k 矩阵的每一行都

当作一个长度为 k 的向量,把每一列都当作一个长度为 n 的向量:

def get_row(A, i):

return A[i] # A[i]是第i行

def get_column(A, j):

return [A_i[j] # 第A_i行的第j个元素

for A_i in A] # 对每个A_i行

同样,我们也可以根据形状和用来生成元素的函数来创建矩阵。可以通过一个嵌套的列表

解析来实现

def make_matrix(num_rows, num_cols, entry_fn):

"""returns a num_rows x num_cols matrix

whose (i,j)th entry is entry_fn(i, j)"""

return [[entry_fn(i, j) # 根据i创建一个列表

for j in range(num_cols)] # [entry_fn(i, 0), ... ]

for i in range(num_rows)] # 为每一个i创建一个列表

有了这个函数,就可以生成一个 5×5 单位矩阵(对角线元素是 1,其他元素是 0) :

def is_diagonal(i, j):

"""1's on the 'diagonal', 0's everywhere else"""

return 1 if i == j else 0

identity_matrix = make_matrix(5, 5, is_diagonal)

# [[1, 0, 0, 0, 0],

# [0, 1, 0, 0, 0],

# [0, 0, 1, 0, 0],

# [0, 0, 0, 1, 0],

# [0, 0, 0, 0, 1]]

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 1 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子