当前位置:
首页
文章
后端
详情

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 = [10,0 ,2]

x = np.array(array).reshape(22)

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矩阵转置的案例与矩阵转置方法的相关内容,希望对大家的学习有所帮助。


免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型