Python numpy中矩陣的基本用法匯總
Python矩陣的基本用法
mat()函數(shù)將目標(biāo)數(shù)據(jù)的類(lèi)型轉(zhuǎn)化成矩陣(matrix)
1,mat()函數(shù)和array()函數(shù)的區(qū)別
Numpy函數(shù)庫(kù)中存在兩種不同的數(shù)據(jù)類(lèi)型(矩陣matrix和數(shù)組array),都可以用于處理行列表示的數(shù)字元素,雖然他們看起來(lái)很相似,但是在這兩個(gè)數(shù)據(jù)類(lèi)型上執(zhí)行相同的數(shù)學(xué)運(yùn)算可能得到不同的結(jié)果,其中Numpy函數(shù)庫(kù)中的matrix與MATLAB中matrices等價(jià)。
直接看一個(gè)例子:
import numpy as np a = np.mat('1 3;5 7') b = np.mat([[1,2],[3,4]]) print(a) print(b) print(type(a)) print(type(b)) c = np.array([[1,3],[4,5]]) print(c) print(type(c))
結(jié)果:
[[1 3]
[5 7]]
[[1 2]
[3 4]]
<class 'numpy.matrixlib.defmatrix.matrix'>
<class 'numpy.matrixlib.defmatrix.matrix'>
[[1 3]
[4 5]]
<class 'numpy.ndarray'>
首先,mat() 函數(shù)與array()函數(shù)生成矩陣所需的數(shù)據(jù)格式有區(qū)別,mat()函數(shù)中數(shù)據(jù)可以為字符串以分號(hào)(;)分割或者為列表形式以逗號(hào)(,)分割,而array()函數(shù)中數(shù)據(jù)只能為后者形式。
其次,兩者的類(lèi)型不同,用mat函數(shù)轉(zhuǎn)換為矩陣后才能進(jìn)行一些線(xiàn)性代數(shù)的操作。
from numpy import * # 構(gòu)建一個(gè)4*4的隨機(jī)數(shù)組 array_1 = random.rand(4,4) print(array_1) print(type(array_1)) ''' [[0.12681561 0.26644355 0.03582107 0.71475804] [0.01380711 0.85308305 0.37838406 0.83663897] [0.20034209 0.5736587 0.56692541 0.64008518] [0.97780979 0.129229 0.37688616 0.55341492]] <class 'numpy.ndarray'> ''' # 使用mat函數(shù)將數(shù)組轉(zhuǎn)化為矩陣 matrix_1 = mat(array_1) print(matrix_1) print(type(matrix_1)) ''' [[0.32538457 0.60674013 0.68625186 0.58957989] [0.26465813 0.93378939 0.12944934 0.95064032] [0.65683256 0.01352025 0.11932895 0.9361348 ] [0.11667241 0.16077876 0.50904118 0.44128675]] <class 'numpy.matrixlib.defmatrix.matrix'> '''
2,mat()函數(shù)創(chuàng)建常見(jiàn)的矩陣
import numpy as np # 創(chuàng)建一個(gè)3*3的零矩陣,矩陣這里zeros函數(shù)的參數(shù)是一個(gè)tuple類(lèi)型(3,3) data1 = np.mat(np.zeros((3,3))) print(data1) ''' [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] ''' # 創(chuàng)建一個(gè)2*4的1矩陣,默認(rèn)是浮點(diǎn)型的數(shù)據(jù),如果需要時(shí)int,可以使用dtype=int data2 = np.mat(np.ones((2,4))) print(data2) ''' [[1. 1. 1. 1.] [1. 1. 1. 1.]] ''' # 這里使用numpy的random模塊 # random.rand(2,2)創(chuàng)建的是一個(gè)二維數(shù)組,但是需要將其轉(zhuǎn)化為matrix data3 = np.mat(np.random.rand(2,2)) print(data3) ''' [[0.62002668 0.55292404] [0.53018371 0.1548954 ]] ''' # 生成一個(gè)3*3的0-10之間的隨機(jī)整數(shù)矩陣,如果需要指定下界可以多加一個(gè)參數(shù) data4 = np.mat(np.random.randint(10,size=(3,3))) print(data4) ''' [[0 4 1] [7 9 9] [9 0 4]] ''' # 產(chǎn)生一個(gè)2-8之間的隨機(jī)整數(shù)矩陣 data5 = np.mat(np.random.randint(2,8,size=(2,5))) print(data5) ''' [[4 6 3 3 4] [4 3 3 3 6]] ''' # 產(chǎn)生一個(gè)2*2的對(duì)角矩陣 data6 = np.mat(np.eye(2,2,dtype=int)) print(data6) ''' [[1 0] [0 1]] ''' # 生成一個(gè)對(duì)角線(xiàn)為1,2,3的對(duì)角矩陣 a1 = [1,2,3] a2 = np.mat(np.diag(a1)) print(a2) ''' [[1 0 0] [0 2 0] [0 0 3]] '''
2.1,zeros
zeros函數(shù)是生成指定維數(shù)的全0數(shù)組
>>myMat=np.zeros(3) ###生成一個(gè)一維的全0數(shù)組 >>print(myMat) >>array([0.,0.,0.]) >>myMat1=np.zeros((3,2)) ####生成一個(gè)3*2的全0數(shù)組 >>print(myMat) >>array([[0.,0.], [0.,0.] [0.,0.]])
2.2,ones
ones函數(shù)是用于生成一個(gè)全1的數(shù)組
>>onesMat=np.ones(3) ###1*3的全1數(shù)組 >>print(onesMat) >>array([1.,1.,1.]) >>onesMat1=np.ones((2,3)) ###2*3的全1數(shù)組 >>print(onesMat1) >>array([[1.,1.,1.],[1.,1.,1.]])
2.3,eye
eye函數(shù)用戶(hù)生成指定行數(shù)的單位矩陣
>>eyeMat=np.eye(4) >>print(eyeMat) >>array([[1.,0.,0.,0.], [0.,1.,0.,0.], [0.,0.,1.,0.,], [0.,0.,0.,1.]])
2.4,full
numpy.full(shape,fill_value=num)用于創(chuàng)建一個(gè)自定義形狀的數(shù)組,可以自己指定一個(gè)值,用它填滿(mǎn)整個(gè)數(shù)組。
fill_value 用來(lái)填充的值,可以是數(shù)字,也可以是字符串
nd_test = np.full(shape=(2,3,4),fill_value='ai') print(nd_test) array([[['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai']], [['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai'], ['ai', 'ai', 'ai', 'ai']]], dtype='<U2')
2.5 nonzero()
nonzero函數(shù)是numpy中用于得到數(shù)組array中非零元素的位置(數(shù)組索引)函數(shù)。它的返回值是一個(gè)長(zhǎng)度為a.ndim(數(shù)組a的軸數(shù))的元組,元組的每個(gè)元素都是一個(gè)整數(shù)數(shù)組,其值為非零元素的下標(biāo)在對(duì)應(yīng)軸上的值。
只有a中非零元素才會(huì)有索引值,那些零值元素沒(méi)有索引值,通過(guò)a[nonzero(a)]得到所有a中的非零值。
import numpy as np SS = [0,0,0,0] re = np.array(SS) print(SS) print(np.nonzero(re)) ''' [0, 0, 0, 0] (array([], dtype=int64),) '''
a是一維數(shù)組(索引1和索引2的位置上元素的值非零)
>>> import numpy as np >>> a = [0,2,3] >>> b = np.nonzero(a) >>> b (array([1, 2], dtype=int64),) >>> np.array(b).ndim 2
a是多維數(shù)組
from numpy import * b = array([[1,1,1,0,1,1],[1,1,1,0,1,0],[1,1,1,0,1,1]]) print(b) c = nonzero(b) print(c) ''' [[1 1 1 0 1 1] [1 1 1 0 1 0] [1 1 1 0 1 1]] (array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 4, 5, 0, 1, 2, 4, 0, 1, 2, 4, 5], dtype=int64)) '''
解釋一下:矩陣 b中,b[0,0] b[0,1],b[0,2],b[0,4],b[0,5],b[1,0],b[1,1],b[1,2],b[1,4],b[2,0],b[2,1],b[2,2],b[2,4],b[2,5]元素的值非零。
當(dāng)使用布爾數(shù)組直接作為下標(biāo)對(duì)象護(hù)著元組下標(biāo)對(duì)象中有布爾數(shù)組時(shí),都相當(dāng)于用nonzero()將布爾數(shù)組轉(zhuǎn)換成一組整數(shù)數(shù)組,然后使用整數(shù)數(shù)組進(jìn)行下標(biāo)計(jì)算。
nonzero(a)返回?cái)?shù)組a中值不為零的元素的下標(biāo),它的返回值是一個(gè)長(zhǎng)度為a.ndim(數(shù)組a的軸數(shù))的元組,元組的每個(gè)元素都是一個(gè)整數(shù)數(shù)組,其值為非零元素的下標(biāo)在對(duì)應(yīng)軸上的值。例如對(duì)于1維布爾數(shù)組b1,nonzero(b1)所得到的是一個(gè)長(zhǎng)度為1的元組,它表示b1[0]和b1[2]的值不為0(FALSE)。
import numpy as np b1 = np.array([True,False,True,False]) res1 = np.nonzero(b1) print(res1) # (array([0, 2], dtype=int64),)
對(duì)于二維數(shù)組b2,nonzero(b2)所得到的是一個(gè)長(zhǎng)度為2的元組,它的第0個(gè)元素是數(shù)組a中值不為0的元素的第0個(gè)軸的下標(biāo),第一個(gè)元素則是第1軸的下標(biāo),因此從下面得到的結(jié)果可知b2[0,0] , n2[0,2]和b2[1,0]的值不為0:
b2 = np.array([[True,False,True],[True,False,False]]) res2 = np.nonzero(b2) print(res2) # (array([0, 0, 1], dtype=int64), array([0, 2, 0], dtype=int64))
當(dāng)布爾數(shù)組直接做維下標(biāo)時(shí),相當(dāng)于使用由nonzero()轉(zhuǎn)換之后的元組作為下標(biāo)對(duì)象:
b3 = np.arange(3*4*5).reshape(3,4,5) res3 = b3[np.nonzero(b2)] print(res3) ''' [[ 0 1 2 3 4] [10 11 12 13 14] [20 21 22 23 24]] '''
3,常見(jiàn)的矩陣運(yùn)算
3.1,矩陣相乘(*)
就是矩陣的乘法操作,要求左邊矩陣的列和右邊矩陣的行數(shù)要一致
from numpy import * ''' 1*2 的矩陣乘以2*1 的矩陣 得到1*1 的矩陣''' a1 = mat([1,2]) print(a1) a2 = mat([[1],[2]]) print(a2) a3 = a1*a2 print(a3) ''' [[1 2]] [[1] [2]] [[5]] '''
3.2,矩陣點(diǎn)乘(multiply)
矩陣點(diǎn)乘則要求矩陣必須維數(shù)相等,即M*N維矩陣乘以M*N維矩陣
from numpy import * ''' 矩陣點(diǎn)乘為對(duì)應(yīng)矩陣元素相乘''' a1 = mat([1,1]) print(a1) a2 = mat([2,2]) print(a2) a3 = multiply(a1,a2) print(a3) ''' [[1 1]] [[2 2]] [[2 2]] ''' a1 = mat([2,2]) a2 = a1*2 print(a2) # [[4 4]]
3.3,矩陣求逆變換(.I)
from numpy import * ''' 矩陣求逆變換:求矩陣matrix([[0.5,0],[0,0.5]])的逆矩陣''' a1 = mat(eye(2,2)*0.5) print(a1) a2 = a1.I print(a2) ''' [[0.5 0. ] [0. 0.5]] [[2. 0.] [0. 2.]] '''
3.4,矩陣求轉(zhuǎn)置(.T)
from numpy import * '''矩陣的轉(zhuǎn)置''' a1 = mat([[1,1],[0,0]]) print(a1) a2 = a1.T print(a2) ''' [[1 1] [0 0]] [[1 0] [1 0]] '''
3.5,求矩陣對(duì)應(yīng)列行的最大值,最小值,和。
計(jì)算每一列,行的和
from numpy import * '''計(jì)算每一列,行的和''' a1 = mat([[1,1],[2,3],[4,5]]) print(a1) # 列和,這里得到的是1*2的矩陣 a2=a1.sum(axis=0) print(a2) ''' [[7 9]] ''' # 行和,這里得到的是3*1的矩陣 a3=a1.sum(axis=1) print(a3) ''' [[2] [5] [9]] ''' # 計(jì)算第一行所有列的和,這里得到的是一個(gè)數(shù)值 a4=sum(a1[1,:]) print(a4) ''' 5 '''
計(jì)算最大,最小值和索引
from numpy import * '''計(jì)算每一列,行的和''' a1 = mat([[1,1],[2,3],[4,5]]) print(a1) ''' [[1 1] [2 3] [4 5]] ''' # 計(jì)算a1矩陣中所有元素的最大值,這里得到的結(jié)果是一個(gè)數(shù)值 maxa = a1.max() print(maxa) #5 # 計(jì)算第二列的最大值,這里得到的是一個(gè)1*1的矩陣 a2=max(a1[:,1]) print(a2) #[[5]] # 計(jì)算第二行的最大值,這里得到的是一個(gè)一個(gè)數(shù)值 maxt = a1[1,:].max() print(maxt) #3 # 計(jì)算所有列的最大值,這里使用的是numpy中的max函數(shù) maxrow = np.max(a1,0) print(maxrow) #[[4 5]] # ;//計(jì)算所有行的最大值,這里得到是一個(gè)矩陣 maxcolumn = np.max(a1,1) print(maxcolumn) ''' [[1] [3] [5]] ''' # 計(jì)算所有列的最大值對(duì)應(yīng)在該列中的索引 maxindex = np.argmax(a1,0) print(maxindex) #[[2 2]] # 計(jì)算第二行中最大值對(duì)應(yīng)在改行的索引 tmaxindex = np.argmax(a1[1,:]) print(tmaxindex) # 1
3.6,矩陣的分隔和合并?。╲stack hstack)
矩陣的分割,同列表和數(shù)組的分割一致
from numpy import * ''' 矩陣的分隔,同列表和數(shù)組的分隔一致''' a = mat(ones((3,3))) print(a) # 分隔出第二行以后的行和第二列以后的列的所有元素 b = a[1:,1:] print(b) ''' [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] [[1. 1.] [1. 1.]] '''
矩陣的合并
from numpy import * a = mat(ones((2,2))) print(a) b = mat(eye(2)) print(b) # 按照列和并,即增加行數(shù) c = vstack((a,b)) print(c) # 按照行合并,即行數(shù)不變,擴(kuò)展列數(shù) d = hstack((a,b)) print(d) ''' [[1. 1.] [1. 1.]] [[1. 0.] [0. 1.]] [[1. 1.] [1. 1.] [1. 0.] [0. 1.]] [[1. 1. 1. 0.] [1. 1. 0. 1.]] '''
3.7,矩陣,列表,數(shù)組的轉(zhuǎn)換
列表可以修改,并且列表中元素可以使不同類(lèi)型的數(shù)據(jù),如下:
1 li =[[1],'hello',3]
numpy中數(shù)組,同一個(gè)數(shù)組中所有元素必須為同一個(gè)類(lèi)型,有幾個(gè)常見(jiàn)的屬性:
from numpy import * a=array([[2],[1]]) print(a ) dimension=a.ndim m,n=a.shape # 元素總個(gè)數(shù) number=a.size print(number) # 2 # 元素的類(lèi)型 str=a.dtype print(str) # int32
numpy中的矩陣也有與數(shù)組常見(jiàn)的幾個(gè)屬性,他們之間的轉(zhuǎn)換如下:
from numpy import * # 列表 a1 = [[1,2],[3,2],[5,2]] # 將列表轉(zhuǎn)化為二維數(shù)組 a2 = array(a1) # 將列表轉(zhuǎn)化成矩陣 a3 = mat(a1) # 將矩陣轉(zhuǎn)化成數(shù)組 a4 = array(a3) # 將矩陣轉(zhuǎn)換成列表 a5=a3.tolist() # 將數(shù)組轉(zhuǎn)換成列表 a6=a2.tolist() print(type(a1)) print(type(a2)) print(type(a3)) print(type(a4)) print(type(a5)) print(type(a6)) ''' <class 'list'> <class 'numpy.ndarray'> <class 'numpy.matrixlib.defmatrix.matrix'> <class 'numpy.ndarray'> <class 'list'> <class 'list'> '''
注意:當(dāng)列表為一維的時(shí)候,將他們轉(zhuǎn)換成數(shù)組和矩陣后,再通過(guò)tolist()轉(zhuǎn)換成列表是不相同的,這里需要做一些小小的修改,如下:
from numpy import * a1=[1,2,3] print(a1) print(type(a1)) a2=array(a1) print(a2) print(type(a2)) a3=mat(a1) print(a3) print(type(a3)) ''' [1, 2, 3] <class 'list'> [1 2 3] <class 'numpy.ndarray'> [[1 2 3]] <class 'numpy.matrixlib.defmatrix.matrix'> ''' a4=a2.tolist() print(a4) print(type(a4)) a5=a3.tolist() print(a5) print(type(a5)) ''' [1, 2, 3] <class 'list'> [[1, 2, 3]] <class 'list'> ''' a6=(a4 == a5) print(a6) print(type(a6)) a7=(a4 is a5[0]) print(a7) print(type(a7)) ''' False <class 'bool'> False <class 'bool'> '''
矩陣轉(zhuǎn)換成數(shù)值,存在以下一種情況:
from numpy import * dataMat=mat([1]) print(dataMat) print(type(dataMat)) ''' [[1]] <class 'numpy.matrixlib.defmatrix.matrix'> ''' # 這個(gè)時(shí)候獲取的就是矩陣的元素的數(shù)值,而不再是矩陣的類(lèi)型 val=dataMat[0,0] print(val) print(type(val)) ''' 1 <class 'numpy.int32'> '''
4, matrix.getA()
getA()是numpy的一個(gè)函數(shù),作用是將矩陣轉(zhuǎn)成一個(gè)ndarray,getA()函數(shù)和mat()函數(shù)的功能相反,是將一個(gè)矩陣轉(zhuǎn)化為數(shù)組。
如果不轉(zhuǎn),矩陣的每個(gè)元素將無(wú)法取出,會(huì)造成越界的問(wèn)題,其具體解釋如下:
matrix.getA() Return self as an ndarray object. Equivalent to np.asarray(self) Parameters: None Returns: __ret_: ndarray self as an ndarray
舉例如下:
>>> x = np.matrix(np.arange(12).reshape((3,4))); x matrix([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> x.getA() array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])
那么為什么需要轉(zhuǎn)換呢?
因?yàn)樵诋?huà)出數(shù)據(jù)集合的函數(shù)中,代碼如下(取自機(jī)器學(xué)習(xí)實(shí)戰(zhàn)Logistic回歸最佳擬合直線(xiàn)的函數(shù))
def plotBestFit(weights): weights = weights.getA() ... for i in range(n): #分類(lèi) if int(labelMat[i]) == 1: xcord1.append(dataArr[i, 1]) ycord1.append(dataArr[i, 2]) else: xcord2.append(dataArr[i, 1]) ycord2.append(dataArr[i, 2])
在這個(gè)代碼,我們需要取出其中每一行每一列的值
如果是矩陣的話(huà),我們測(cè)試一下:
>>> b matrix([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]) >>> b[1][1] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\Python\lib\site-packages\numpy\matrixlib\defmatrix.py", line 284, in __getitem__ out = N.ndarray.__getitem__(self, index) IndexError: index 1 is out of bounds for axis 0 with size 1 >>> >>> len(b[1]) 1 >>> len(b[1][0]) 1
可以發(fā)現(xiàn)我們?nèi)〕鼍仃嚨囊恍写笮≈挥?,如果你使用b[1][1],b[1][2]之類(lèi)的就會(huì)越界
當(dāng)我們轉(zhuǎn)為np.array類(lèi)型時(shí)
>>> c array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]) >>> len(c[1]) 4 >>> c[1][1] 2 >>>
可以看出,我們可以取出任何一個(gè)值。
Python矩陣的切片
1,行操作
li = [[1,1],[1,3],[2,3],[4,4],[2,4]] from numpy import * a = [[1,2],[3,4],[5,6]] a = mat(a) # 打印整個(gè)矩陣 print(a[0:]) ''' [[1 2] [3 4] [5 6]] ''' # 打印矩陣E從1行開(kāi)始到末尾行的內(nèi)容 print(a[1:]) ''' [[3 4] [5 6]] ''' # 表示打印矩陣E 從1行到3行的內(nèi)容 print(a[1:3]) ''' [[3 4] [5 6]] '''
2,列操作
li = [[1,1],[1,3],[2,3],[4,4],[2,4]] from numpy import * mat = mat(li) # 在整個(gè)矩陣的基礎(chǔ)下,打印1列(指的是序列為1的列 print(mat[:,0]) ''' [[1] [1] [2] [4] [2]] ''' # 在矩陣的1行到2行([1,3)) 的前提下打印兩列 # 2 列不是指兩列,而是序號(hào)為2的列 print(mat[1:3,1]) ''' [[3] [3]] '''
Python numpy庫(kù)其他函數(shù)用法
Numpy 的tile函數(shù)用法
tile函數(shù)位于Python模塊numpy.lib.shape_base中,他的功能是重復(fù)某個(gè)數(shù)組,比如 tile(A,reps),功能是將數(shù)組A重復(fù)reps次,構(gòu)成一個(gè)新的數(shù)組。
1,函數(shù)的定義與說(shuō)明
函數(shù)格式為 tile(A,reps)
A和reps 都是array_like
A的類(lèi)型眾多,幾乎所有類(lèi)型都可以:array list tuple dict matrix 以及基本數(shù)據(jù)類(lèi)型Int string float 以及bool類(lèi)型。
reps 的類(lèi)型也很多,可以是tuple list dict array int bool 但不可以是float string matrix類(lèi)型。
2,示例
>>> a = np.array([0, 1, 2]) >>> np.tile(a, 2) array([0, 1, 2, 0, 1, 2]) >>> np.tile(a, (2, 2)) array([[0, 1, 2, 0, 1, 2], [0, 1, 2, 0, 1, 2]]) >>> np.tile(a, (2, 1, 2)) array([[[0, 1, 2, 0, 1, 2]], [[0, 1, 2, 0, 1, 2]]]) >>> b = np.array([[1, 2], [3, 4]]) >>> np.tile(b, 2) array([[1, 2, 1, 2], [3, 4, 3, 4]]) >>> np.tile(b, (2, 1)) array([[1, 2], [3, 4], [1, 2], [3, 4]]) >>> c = np.array([1,2,3,4]) >>> np.tile(c,(4,1)) array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
from numpy import * code1 = tile(1,2) print(code1) # [1 1] code2 = tile((1,2,3),3) print(code2) # [1 2 3 1 2 3 1 2 3] a = [1,3,4] code3 = tile(a,[2,3]) print(code3) ''' [[1 3 4 1 3 4 1 3 4] [1 3 4 1 3 4 1 3 4]] '''
Numpy 范數(shù)的用法
顧名思義,linalg = linear + algebralinalg = linear + algebra , norm則表示范數(shù),首先需要注意的是范數(shù)是對(duì)向量(或者矩陣)的度量,是一個(gè)標(biāo)量(scalar):
np.linalg.norm(求范數(shù)):linalg=linear(線(xiàn)性)+algebra(代數(shù))
首先:help(np.linalg.norm) 查看其文檔:
norm(x, ord=None, axis=None, keepdims=False)
這里我們只對(duì)常用設(shè)置進(jìn)行說(shuō)明,x表示要度量的向量,ord表示范數(shù)的種類(lèi),axis表示向量的計(jì)算方向,keepdims表示設(shè)置是否保持維度不變。
用法:
import numpy as np a=np.array([[complex(1,-1),3],[2,complex(1,1)]]) print(a) print(np.linalg.norm(a,ord=2) ) #計(jì)算矩陣2的范數(shù) print(np.linalg.norm(a,ord=1) ) #計(jì)算矩陣1的范數(shù) print(np.linalg.norm(a,ord=np.inf) ) #計(jì)算矩陣無(wú)窮的范數(shù)
示例:
import numpy as np x = np.array([5,7]) np.linalg.norm(x) 8.602325267042627 np.linalg.norm(x,ord=2) 8.602325267042627 np.linalg.norm(x,ord=1) 12.0 np.linalg.norm(x,ord=np.inf) 7.0
范數(shù)理論告訴我們,一范數(shù) >= 二范數(shù) >= 無(wú)窮范數(shù)
參考文獻(xiàn):http://www.dbjr.com.cn/article/124939.htm
http://www.dbjr.com.cn/article/156112.htm
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Python命令行參數(shù)argv和argparse該如何使用
這篇文章主要介紹了Python命令行參數(shù)argv和argparse該如何使用,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-02-02Python基本數(shù)據(jù)結(jié)構(gòu)與用法詳解【列表、元組、集合、字典】
這篇文章主要介紹了Python基本數(shù)據(jù)結(jié)構(gòu)與用法,結(jié)合實(shí)例形式分析了Python基本數(shù)據(jù)結(jié)構(gòu)中的列表、元組、集合、字典相關(guān)概念、使用方法及推導(dǎo)式、遍歷等相關(guān)使用技巧,需要的朋友可以參考下2019-03-03Python使用定時(shí)調(diào)度任務(wù)的方式
Python 有幾種方法可以定時(shí)調(diào)度一個(gè)任務(wù),這就是我們將在本文中學(xué)習(xí)的內(nèi)容。接下倆下邊將給大家介紹5種Python使用定時(shí)調(diào)度任務(wù)方式,需要的朋友可以參考下面文章內(nèi)容吧2021-09-09