App下載

python矩陣轉(zhuǎn)置的案例與矩陣轉(zhuǎn)置方法分享!

智慧女孩不禿頭 2021-10-09 17:27:45 瀏覽數(shù) (4229)
反饋

線(xiàn)性回歸的普通最小二乘法。 普通最小二乘法 (OLS) 是一種在簡(jiǎn)單線(xiàn)性回歸中估計(jì)參數(shù) β 的方法,Xβ = y,其中 X 是特征矩陣,y 是因變量(或目標(biāo)),通過(guò)最小化給定數(shù)據(jù)集中觀察到的因變量與線(xiàn)性函數(shù)預(yù)測(cè)的因變量之間的差異。

那么話(huà)不多說(shuō)我們來(lái)看下下面這個(gè)代碼:

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 表示對(duì)該矩陣進(jìn)行轉(zhuǎn)置 a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)

print(a)

#輸出的內(nèi)容為:[2. 1.5]

在代碼?“a = np.dot(np.dot(np.linalg.inv(np.dot(x.T, x)), x.T), y).round(2)”?中,?dot?函數(shù)是矩陣乘,那么對(duì)于“*”則是表示為逐個(gè)元素相乘。我們可以看看下面的這個(gè)代碼:

dot函數(shù)使用:

a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
np.dot (a,b)  #矩陣乘

結(jié)果: ?array( [[1,1], [1,1]])?

“*”使用:

a =np.array([[1,1],[1,1]])
b = np.array ([[1,0],[O,1]])
c = a*b #對(duì)應(yīng)元素相乘 

結(jié)果:?array( [[1,0], [0,1]])?

在通過(guò)代碼實(shí)現(xiàn)之后我們對(duì)于 ?dot? 與?“*”?使用的是有差別了。

np.linalg.inv() 是矩陣求逆的意思,除此之外還有 np.linalg.det() 矩陣求行列式 、 np.linalg.norm() 求范數(shù)和 np.linalg.eigh 計(jì)算矩陣特征向量。


矩陣轉(zhuǎn)置方法代碼分享如下:

#Python的matrix轉(zhuǎn)置
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、利用元祖的特性進(jìn)行轉(zhuǎn)置
def transformMatrix(m):
#此處巧妙的先按照傳遞的元祖m的列數(shù),生成了r的行數(shù)
	r = [[] for i in m[0]]	
	for ele in m:
		for i in range(len(ele)):
			#【重點(diǎn)】:此處利用m的第ele行i列,并將該值追加到r的i行上;巧妙的利用了i
			r[i].append(ele[i])
			#printmatrix(r)#方便查看數(shù)組是怎么賦值的,如不需要可注釋掉
			#print("*"*20)#打印分隔符
	return r	
#2、利用zip函數(shù)生成轉(zhuǎn)置矩陣
def transformMatrix1(m):
	return zip(*m)	
#3、利用numpy模塊的transpose方法
def transformMatrix2(m):
	import numpy
	return numpy.transpose(m).tolist()	
print("第一種方法結(jié)果展示")	
printmatrix(transformMatrix(matrix))
print("第二種方法結(jié)果展示")
printmatrix(transformMatrix1(matrix))
print("第二種方法的簡(jiǎn)潔代碼展示")
printmatrix(zip(*matrix))#為了代碼更簡(jiǎn)潔,可以不用transformMatrix1函數(shù),直接打印
print("第三種方法的結(jié)果展示")
printmatrix(transformMatrix2(matrix))

運(yùn)行結(jié)果如下:

第一種方法結(jié)果展示
 1  5  9 
 2  6 10 
 3  7 11 
 4  8 12 
第二種方法結(jié)果展示
 1  5  9 
 2  6 10 
 3  7 11 
 4  8 12 
第二種方法的簡(jiǎn)潔代碼展示
 1  5  9 
 2  6 10 
 3  7 11 
 4  8 12 
第三種方法的結(jié)果展示
 1  5  9 
 2  6 10 
 3  7 11 
 4  8 12 

那么以上就是今天要和大家分享有關(guān)于python矩陣轉(zhuǎn)置的案例與矩陣轉(zhuǎn)置方法的相關(guān)內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。


0 人點(diǎn)贊