python矩阵转置的案例与矩阵转置方法分享!
线性回归的普通最小二乘法。 普通最小二乘法 (OLS) 是一种在简单线性回归中估计参数 β 的方法,Xβ = y,其中 X 是特征矩阵,y 是因变量(或目标),通过最小化给定数据集中观察到的因变量与线性函数预测的因变量之间的差异。
那么话不多说我们来看下下面这个代码:
import numpy as np
import numpy as np
xn, xp = [2,2]
array = []
for i in range(2):
array = [1, 0,0 ,2]
x = np.array(array).reshape(2, 2)
y = np.array([2,3])
# .T 表示对该矩阵进行转置
a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)
print(a)
#输出的内容为:[2. 1.5]
在代码“a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)”
中,dot
函数是矩阵乘,那么对于“*”则是表示为逐个元素相乘。我们可以看看下面的这个代码:
dot函数使用:
a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
np.dot (a,b) #矩阵乘
结果:
array( [[1,1],
[1,1]])
“*”使用:
a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
c = a*b #对应元素相乘
结果:array( [[1,0], [0,1]])
在通过代码实现之后我们对于 dot
与“*”
使用的是有差别了。
np.linalg.inv() 是矩阵求逆的意思,除此之外还有 np.linalg.det() 矩阵求行列式 、 np.linalg.norm() 求范数和 np.linalg.eigh 计算矩阵特征向量。
矩阵转置方法代码分享如下:
#Python的matrix转置
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
def printmatrix(m):
for ele in m:
for i in ele:
print("%2d" %i,end = " ")
print()
#1、利用元祖的特性进行转置
def transformMatrix(m):
#此处巧妙的先按照传递的元祖m的列数,生成了r的行数
r = [[] for i in m[0]]
for ele in m:
for i in range(len(ele)):
#【重点】:此处利用m的第ele行i列,并将该值追加到r的i行上;巧妙的利用了i
r[i].append(ele[i])
#printmatrix(r)#方便查看数组是怎么赋值的,如不需要可注释掉
#print("*"*20)#打印分隔符
return r
#2、利用zip函数生成转置矩阵
def transformMatrix1(m):
return zip(*m)
#3、利用numpy模块的transpose方法
def transformMatrix2(m):
import numpy
return numpy.transpose(m).tolist()
print("第一种方法结果展示")
printmatrix(transformMatrix(matrix))
print("第二种方法结果展示")
printmatrix(transformMatrix1(matrix))
print("第二种方法的简洁代码展示")
printmatrix(zip(*matrix))#为了代码更简洁,可以不用transformMatrix1函数,直接打印
print("第三种方法的结果展示")
printmatrix(transformMatrix2(matrix))
运行结果如下:
第一种方法结果展示
1 5 9
2 6 10
3 7 11
4 8 12
第二种方法结果展示
1 5 9
2 6 10
3 7 11
4 8 12
第二种方法的简洁代码展示
1 5 9
2 6 10
3 7 11
4 8 12
第三种方法的结果展示
1 5 9
2 6 10
3 7 11
4 8 12
那么以上就是今天要和大家分享有关于python矩阵转置的案例与矩阵转置方法的相关内容,希望对大家的学习有所帮助。