首页 > 编程知识 正文

python进行矩阵运算,python实现矩阵

时间:2023-05-06 18:49:33 阅读:285883 作者:3379

矩阵点乘

在numpy中,*号用来对矩阵进行逐元素乘积
我们熟悉的矩阵点乘,用dot函数

举个栗子:

import numpy as npx = np.array([[1, 2], [2, 3]]) # 2*2矩阵y = np.array([[4, 5], [6, 7]]) # 2*2矩阵print(x * y) # 逐元素相乘# [[ 4 10]# [12 21]]print(x.dot(y)) # 点乘# [[16 19]# [26 31]]

注意:矩阵点乘时需要保证x的列数与y的行数相等。

另外,事情一旦牵扯到一维数组,就会变得比较奇怪。
按一贯的思维,一维数组应该是个行数为1,列数为元素个数的矩阵。
但在点乘计算时,却好像不是这样子的…`

import numpy as npx = np.array([[1, 2, 3], [4, 5, 6]]) # 2*3矩阵y = np.array([1, 2, 3]) # 一维数组y_1 = np.array([[1], [2], [3]]) # 3*1矩阵print(np.dot(x, y))# [14 32]print(np.dot(x, y_1))# [[14]# [32]]

在这个栗子中,一维数组[1, 2, 3]是作为一个3*1的矩阵来操作的,而且dot函数返回了一个一维数组。

总结一下:
一个矩阵和一个长度合适的一维数组之间的矩阵乘积,结果是一个一维数组。

.

矩阵的转置、逆、行列式和特征值

numpy.linalg拥有一个矩阵分解的标准函数集。其中包含常见的求逆、行列式等操作。

X.T:返回X的转置inv(X):返回X的逆矩阵det(X):返回X的行列式eig(X):返回X的特征值和特征向量

下面举个栗子:

import numpy as npfrom numpy.linalg import inv,eig, detx = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 3阶方阵trans = x.T# [[1 4 7]# [2 5 8]# [3 6 9]]inverse = inv(x)# [[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]# [-6.30503948e+15 1.26100790e+16 -6.30503948e+15]# [ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]determinant = det(x)# -9.51619735392994e-16eigen_value, eigen_vector = eig(x)# [ 1.61168440e+01 -1.11684397e+00 -9.75918483e-16]# [[-0.23197069 -0.78583024 0.40824829]# [-0.52532209 -0.08675134 -0.81649658]# [-0.8186735 0.61232756 0.40824829]] 参考资料

《利用python进行数据分析》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。