App下載

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

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

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

那么話不多說我們來看下下面這個代碼:

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 表示對該矩陣進行轉(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ù)是矩陣乘,那么對于“*”則是表示為逐個元素相乘。我們可以看看下面的這個代碼:

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 #對應元素相乘 

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

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

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


矩陣轉(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、利用元祖的特性進行轉(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)):
			#【重點】:此處利用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("第二種方法的簡潔代碼展示")
printmatrix(zip(*matrix))#為了代碼更簡潔,可以不用transformMatrix1函數(shù),直接打印
print("第三種方法的結(jié)果展示")
printmatrix(transformMatrix2(matrix))

運行結(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 
第二種方法的簡潔代碼展示
 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)容,希望對大家的學習有所幫助。


0 人點贊