溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Numpy初步

發(fā)布時(shí)間:2020-08-10 14:01:43 來源:ITPUB博客 閱讀:114 作者:Tybyq 欄目:建站服務(wù)器

1,獲取矩陣行列數(shù)

Import numpyasnp

#創(chuàng)建二維的naaray對象

a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(a.shape)   #返回一個(gè)形狀,是一個(gè)tuple

print(a.shape[0])#獲得行數(shù),試想如果是多維的呢,所以你就會(huì)明白為什么是[0]

print(a.shape[1])   #獲得列數(shù)

2,矩陣的截取

importnumpyasnp

#創(chuàng)建二維的naaray對象

a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(a[0:1])#這里不是很懂,看下面

print(a[1,2:4])#返回[89],返回第二行2-3個(gè)數(shù)

print(a[1,2:5])#返回[8910]證明了取第二行的2-4個(gè)數(shù)

3,按條件截取

importnumpyasnp

#創(chuàng)建二維的naaray對象

a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

b=a[a>6]#截取矩陣a中大于6的元素,范圍的是一維數(shù)組

print(b)

print(a>6)#其實(shí)布爾語句首先生成一個(gè)布爾矩陣,將布爾矩陣傳入[](方括號(hào))實(shí)現(xiàn)截取

4,滿足一定條件的元素變成特定的值

importnumpyasnp

#創(chuàng)建二維的naaray對象

a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

print(a)

#大于6清零后矩陣為

a[a>6]=0

print(a)

結(jié)果分別為:

[[12345]

[678910]]

[[12345]

[60000]]

5,矩陣合并

importnumpyasnp

 

a1=np.array([[1,2],[3,4]])

a2=np.array([[5,6],[7,8]])

 

print(np.hstack([a1,a2]))#Horizontal

print(a1)#所以知道為什么是1256,2478了

print(np.vstack((a1,a2)))#vertical

np.concatenate((a1,a2),axis=0)#等價(jià)于np.vstack((a1,a2))

np.conca

6,通過函數(shù)創(chuàng)建矩陣

numpy自帶創(chuàng)建narray對象的函數(shù),可以方便的創(chuàng)建常用的有規(guī)律的矩陣

importnumpyasnp

a=np.arange(10)#默認(rèn)從0開始到10(不包括10),步長為1

print(a)#返回[0123456789]

a1=np.arange(5,10)#從5開始到10(不包括10),步長為1

print(a1)#返回[56789]

a2=np.arange(5,20,2)#從5開始到20(不包括20),步長為2

print(a2)#返回[5791113151719]

 

7,linspace

創(chuàng)建指定數(shù)量等間隔的序列,實(shí)際生成一個(gè)等差數(shù)列

importnumpyasnp

 

a=np.linspace(0,10,7)#生成首位是0,末位是10,含7個(gè)數(shù)的等差數(shù)列

print(a)

8,logspace

logspace用于生成等比數(shù)列。 

importnumpyasnp

 

a=np.logspace(0,10,7)#生成首位是10**0,末位是10**4,含5個(gè)數(shù)的等比數(shù)列

print(a)

9,ones,zeros,eye,empty

ones創(chuàng)建全1矩陣 

zeros創(chuàng)建全0矩陣 

eye創(chuàng)建單位矩陣 

empty創(chuàng)建空矩陣(實(shí)際有值)

importnumpyasnp

 

one=np.ones((3,4))#創(chuàng)建3*4的全1矩陣

print(one)

 

zero=np.zeros((3,4))#創(chuàng)建3*4的全0矩陣

print(zero)

 

eye=np.eye(5)#創(chuàng)建5階單位矩陣

print(eye)

 

empty=np.empty((3,4))#創(chuàng)建3*4的空矩陣(實(shí)際有值)

print(empty)

10,fromstring ——獲得字符ASCII碼

fromstring()方法可以將字符串轉(zhuǎn)化成ndarray對象,需要將字符串?dāng)?shù)字化時(shí)這個(gè)方法比較有用,可以獲得字符串的ascii碼序列,轉(zhuǎn)成相應(yīng)字符的阿斯卡碼。

importnumpyasnp

 

a="abcdef"

b=np.fromstring(a,dtype=np.int8)#因?yàn)橐粋€(gè)字符為8位,所以指定dtype為np.int8

print(b)#返回[979899100101102]

11,fromfunction

fromfunction()方法可以根據(jù)矩陣的行號(hào)列號(hào)生成矩陣的元素。 

例如創(chuàng)建一個(gè)矩陣,矩陣中的每個(gè)元素都為行號(hào)和列號(hào)的和。

importnumpyasnp

 

deffunc(i,j):

returni+j     #這里也可以是別的,比如再加一個(gè)9

 

a=np.fromfunction(func,(5,6))

#函數(shù)定義就是如此,第一個(gè)參數(shù)為指定函數(shù),第二個(gè)參數(shù)為列表list或元組tuple,說明矩陣的大小

print(a)

12,常用矩陣函數(shù)

同樣地,numpy中也定義了許多函數(shù),使用這些函數(shù)可以將函數(shù)作用于矩陣中的每個(gè)元素。 

表格中默認(rèn)導(dǎo)入了numpy模塊,即 import numpy asnp

a為ndarray對象。

np.sin(a) 對矩陣a中每個(gè)元素取正弦,sin(x)

np.cos(a) 對矩陣a中每個(gè)元素取余弦,cos(x)

np.tan(a) 對矩陣a中每個(gè)元素取正切,tan(x)

np.arcsin(a)對矩陣a中每個(gè)元素取反正弦,arcsin(x)

np.arccos(a)對矩陣a中每個(gè)元素取反余弦,arccos(x)

np.arctan(a)對矩陣a中每個(gè)元素取反正切,arctan(x)

np.exp(a) 對矩陣a中每個(gè)元素取指數(shù)函數(shù),ex

np.sqrt(a) 對矩陣a中每個(gè)元素開根號(hào)√x

importnumpyasnp

 

a=np.array([[1,2,3],[4,5,6]])

print(np.sin(a))

 

#結(jié)果

[[0.841470980.909297430.14112001]

[-0.7568025-0.95892427-0.2794155]]

 

print(np.arcsin(a))

 

#結(jié)果

#RuntimeWarning:invalidvalueencounteredinarcsin

print(np.arcsin(a))

[[1.57079633nannan]   #nan是not a number 的意思

[nannannan]]

13,矩陣乘法(點(diǎn)乘)

條件:第一個(gè)矩陣的列數(shù)等于第二個(gè)矩陣的行數(shù),函數(shù)為dot

importnumpyasnp

 

a1=np.array([[1,2,3],[4,5,6]])

a2=np.array([[1,2],[3,4],[5,6]])

ifa1.shape[1]==a2.shape[0]:#列數(shù)等于行數(shù)的話

print(a1.dot(a2))

 

14,矩陣的轉(zhuǎn)置

transpose函數(shù)

importnumpyasnp

 

a=np.array([[1,2,3],[4,5,6]])

print(a.transpose())

15,矩陣的逆

求矩陣的逆需要先導(dǎo)入numpy.linalg,用linalg的inv函數(shù)來求逆。 

矩陣求逆的條件是矩陣的行數(shù)和列數(shù)相同。

importnumpyasnp

importnumpy.linalgaslg

 

a=np.array([[1,2,3],[4,5,6],[7,8,9]])

print(lg.inv(a))

 

#結(jié)果

[[-4.50359963e+159.00719925e+15-4.50359963e+15]

[9.00719925e+15-1.80143985e+169.00719925e+15]

[-4.50359963e+159.00719925e+15-4.50359963e+15]]

 

a=np.eye(3)#3階單位矩陣

print(lg.inv(a))#單位矩陣的逆為他本身

 

#結(jié)果

[[1.0.0.]

[0.1.0.]

[0.0.1.]]

16,矩陣信息獲?。ㄈ缙骄担?

獲得矩陣中元素最大最小值的函數(shù)分別是max和min,可以獲得整個(gè)矩陣、行或列的最大最小值。

importnumpyasnp

a=np.array([[1,3,9],[1,5,6]])

print(a.max())

print(a.min())

print(a.max(axis=0))#[456]axis=0行方向最大(?。┲担传@得每列的最大(?。┲?

print(a.min(axis=1))#[14]axis=1列方向最大(小)值

#要想獲得最大最小值元素所在的位置,可以通過argmax函數(shù)來獲得

print(a.argmax(axis=1))

17,平均值mean()

獲得矩陣中元素的平均值可以通過函數(shù)mean()。同樣地,可以獲得整個(gè)矩陣、行或列的平均值

importnumpyasnp

 

a=np.array([[1,2,3],[4,5,6]])

print(a.mean())#結(jié)果為:3.5

 

#同樣地,可以通過關(guān)鍵字axis參數(shù)指定沿哪個(gè)方向獲取平均值

print(a.mean(axis=0))#結(jié)果[2.53.54.5]

print(a.mean(axis=1))#結(jié)果[2.5.]

18,方差var()

importnumpyasnp

a=np.array([[1,2,3],[4,5,6]])

print(a.var())

print(a.var(axis=0))

print(a.var(axis=1))

19,標(biāo)準(zhǔn)差std()

importnumpyasnp

a=np.array([[1,2,3],[4,5,6]])

print(a.std())

print(a.std(axis=0))

print(a.std(axis=1))

20,中值median()

調(diào)用方法是numpy.median(x,[axis]),axis可指定軸方向,默認(rèn)為axis=none,對所有數(shù)取中值

importnumpyasnp

x=np.array([[1,2,3],[4,5,6]])

print(np.median(x))#對所有數(shù)取中值

print(np.median(x,axis=0))#沿第一維方向取中值

print(np.median(x,axis=1))#沿第二維方向取中值

21,求和sum()

importnumpyasnp

a=np.array([[1,2,3],[4,5,6]])

print(a.sum())#對整個(gè)矩陣求和

print(a.sum(axis=0))#對行方向求和

print(a.sum(axis=1))#對列方向求和

22,累積和cussum()

某位置累積和指的是該位置之前(包括該位置)所有元素的和。

例如序列[1,2,3,4,5],其累計(jì)和為[1,3,6,10,15],即第一個(gè)元素為1,第二個(gè)元素為1+2=3,……,第五個(gè)元素為1+2+3+4+5=15。

矩陣求累積和的函數(shù)是cumsum(),可以對行,列,或整個(gè)矩陣求累積和。

importnumpyasnp

a=np.array([[1,2,3],[4,5,6]])

print(a.cumsum())#對整個(gè)矩陣求累積和

print(a.cumsum(axis=0))#對行方向求累積和

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI