图源于网络 1 1.11 展开一个矩阵
在Numpy中可以使用flatten将矩阵转换成一个一维数组。 此外,也可以使用 1 1.12 计算矩阵的秩
reshape来创建一个行向量。import numpy as np
matrix = np.array([[1, 2, 3],
[ ],
[ ]])
matrix.flatten()
matrix.reshape(1, -1)
矩阵的秩(Rank)是一个重要的线性代数概念,它用于衡量矩阵中的线性独立性。矩阵的秩就是由它的列或行展开的向量空间的维数。我们可以使用NumPy中的线性代数方法matrix_rank计算矩阵的秩。 1 1.13 计算行列式 matrix = np.array([[1, 1, 1],
[ ],
[ ]])
np.linalg.matrix_rank(matrix)
矩阵的行列式(Determinant)是一个标量值,它与方阵(即行数等于列数的矩阵)相关联。行列式的计算通常用于线性代数中,具有许多重要的数学和工程应用。行列式用于描述矩阵的性质,如矩阵是否可逆、矩阵的秩、线性方程组的解等。对于一个n × n的方阵A,它的行列式通常表示为det(A)或|A|。 1 1.14 获取矩阵的对角线元素 matrix = np.array([[1, 2, 3],
[ ],
[ ]])
np.linalg.det(matrix)
矩阵的对角线元素是指矩阵中位于从左上角到右下角的主对角线上的元素。主对角线是指行数和列数相等的情况下,矩阵的第1行、第1列、第2行、第2列等相交的位置上的元素。对角线元素通常表示为 `a[i][i]`,其中 `i` 是行索引和列索引相等的位置。对角线元素在矩阵理论和线性代数中具有重要的作用,它们有以下用途:
使用NumPy的diagonal很容易获取矩阵的对角线元素。 我们还可以使用ffset参数在主对角线的上下偏移, 获取偏移后的对角线方向的元素: 1 1.15 计算矩阵的迹 matrix = np.array([[1, 2, 3],
[ ],
[ ]])
matrix.diagonal()
matrix.diagonal(offset=1)
matrix.diagonal(offset=-1)
矩阵的迹是其对角线元素之和, 常被用在机器学习方法的底层计算中。给定一个NumPy的多维数组, 使用trace就能计算出它的迹。 我们还可以通过先返回矩阵的对角线元素再对其求和的方式来计算矩阵的迹。 1 1.16 计算特征值和特征向量 matrix = np.array([[1, 2, 3],
[ ],
[ ]])
matrix.trace()
sum(matrix.diagonal())
矩阵的特征值(Eigenvalue)和特征向量(Eigenvector)是线性代数中的重要概念。
对于一个方阵(即行数等于列数的矩阵)A,其特征值是一个标量 λ,它满足以下方程:A * v = λ * v,这里,A是一个方阵,v是一个非零向量,λ是特征值。特征值告诉我们在矩阵A的作用下,向量v只发生了缩放,而没有改变方向。特征值可以是实数或复数。特征向量是与特征值相关联的向量。对于方阵A和对应的特征值λ,特征向量v是一个非零向量,它满足上述方程。特征向量描述了在矩阵作用下,向量v的方向不变,只发生了缩放。 1 1.17 计算点积 matrix = np.array([[1, -1, 3],
[ ],
[ ]])
eigenvalues, eigenvectors = np.linalg.eig(matrix)
eigenvalues
eigenvectors
# 建立两个向量
vector_a = np.array([1,2,3])
vector_b = np.array([4,5,6])
# 计算点积
np.dot(vector_a, vector_b)
# 32
1
1.18 矩阵的相加或相减
使用NumPy的add和subtract函数可以实现矩阵的加减。matrix_a = np.array([[1, 1, 1],
[ ],
[ ]])
matrix_b = np.array([[1, 3, 1],
[ ],
[ ]])
np.add(matrix_a, matrix_b)
np.subtract(matrix_a, matrix_b)
当然,也可以直接使用+或-号 1 1.19 矩阵的乘法 matrix_a + matrix_b
使用NumPy的dot或者在Python 3.5以上的版本中使用“@”操作符可以实现矩阵的乘法。# Create matrix
matrix_a = np.array([[1, 1],
[1, 2]])
# Create matrix
matrix_b = np.array([[1, 3],
[1, 2]])
# M两个矩阵相乘
np.dot(matrix_a, matrix_b)
# array([[2, 5],
# [3, 7]])
# 使用@实现两个矩阵相乘
matrix_a @ matrix_b
如要要将两个矩阵对应的元素相乘,则需要使用* 1 1.20 计算矩阵的逆 1 1.21 生成随机数# 两个矩阵对应的元素相乘
matrix_a * matrix_b
# array([[1, 3],
# [1, 4]])
# Create matrix
matrix = np.array([[1, 4],
[2, 5]])
# 计算矩阵的逆
np.linalg.inv(matrix)
# array([[-1.66666667, 1.33333333],
# [ 0.66666667, -0.33333333]])
# 矩阵和矩阵的逆相乘
matrix @ np.linalg.inv(matrix)
# array([[ 1., 0.],
# [ 0., 1.]])
使用NumPy的random函数可以生成随机数。# 设置随机种子
np.random.seed(0)
# 生成3个0-1之间的浮点数
np.random.random(3)
# array([0.5488135 , 0.71518937, 0.60276338])
# 产生3个3-10之间的随机整数
np.random.randint(0, 11, 3)
# array([3, 7, 9])
# 从均值是0且标准差是1的正态分布数据中随机抽取3个数
np.random.normal(0.0, 1.0, 3)
# array([-1.42232584, 1.52006949, -0.29139398])
# 从均值为0且散布程度是1的逻辑分布中随机抽取3个数
np.random.logistic(0.0, 1.0, 3)
# array([-0.98118713, -0.08939902, 1.46416405])
# 从大于或等于1且小于2的数中随机抽取3个数
np.random.uniform(1.0, 2.0, 3)
# array([ 1.47997717, 1.3927848 , 1.83607876])
本节完,下个章节我们将学习如何在Python中加载数据,包括csv文件、Excel文件、JSON文件等。
图源于网络
往期推荐 Python与机器学习系列|1.Python中的向量、 矩阵和数组(一)
参考来源:Chris Albon,Machine Learning with Python Cookbook-Practical Solutions from Preprocessing to Deep Learning
微信扫一扫
关注该公众号