日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python numpy库作用_python Numpy库

發(fā)布時(shí)間:2023/12/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python numpy库作用_python Numpy库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.導(dǎo)入庫

import numpy as np

二.創(chuàng)建

1.numpy中只有一種數(shù)據(jù)類型:ndarray,表示n維數(shù)組

創(chuàng)建ndarray數(shù)組:

-由列表或者元組類型創(chuàng)建數(shù)組

-有元組類型創(chuàng)建數(shù)組

-創(chuàng)建特殊數(shù)組

2.采用np.array函數(shù)來創(chuàng)建,語法為:

np.array(列表或元組)

將參數(shù)列表或者元組轉(zhuǎn)換成ndarray類型.相當(dāng)于強(qiáng)制類型轉(zhuǎn)換

a=np.array([1,2,3,5,19]) 由列表創(chuàng)建一維數(shù)組

b=np.array([[1,1,1],[2,2,2],[3,3,3]]) 由列表創(chuàng)建二維數(shù)組

a=np.array((1,2,3,5,19)) 由元組創(chuàng)建一維數(shù)組

b=np.array(((1,1,1),(2,2,2),(3,3,3))) 由元組創(chuàng)建二維數(shù)組

b=np.array(([1,1,1],(2,2,2),[3,3,3])) 混搭的。。。

創(chuàng)建數(shù)組時(shí),可以用dtype指定數(shù)據(jù)類型:

a=np.array([1,2,3,5,19],dtype=np.int32)

當(dāng)不指定dtype的時(shí)候,numpy會(huì)根據(jù)數(shù)據(jù)自動(dòng)匹配合適的類型

三.數(shù)組類型的屬性

生成一個(gè)數(shù)組 : b=np.array([[1,1,1],[2,2,2],[3,3,3]])

.ndim:數(shù)據(jù)是幾維的:b.ndim的值為2

.shape:數(shù)據(jù)的形狀,即尺寸:b.shape的結(jié)果為(3,3)

.size: 數(shù)組中元素的數(shù)量 b.size的值為9

.dtype: 數(shù)組元素的數(shù)據(jù)類型 b.dtype 的結(jié)果為 int32

.itemsize:數(shù)組中元素所占的字節(jié)數(shù)

四.利用函數(shù)創(chuàng)建特殊數(shù)組

1.全零數(shù)組

①np.zeros(shape, dtype = float)

shape為數(shù)組的形狀,是列表類型或者元組類型

dtype是數(shù)據(jù)的類型,可以是整數(shù)或者實(shí)數(shù),該參數(shù)可以省略

例子:a=np.zeros((3,3),dtype=int),則a里面是一個(gè)3*3的全零數(shù)組

②np.zeros_like(a)

a為一個(gè)已知的數(shù)組,np.zeros_like(a)生成一個(gè)與a形狀相同的全零數(shù)組

a=np.array([[1,2],[2,3],[3,5]]) # a是一個(gè)三行兩列的矩陣

則np.zeros_like(a) 生成一個(gè)三行兩列的全零數(shù)組

2.全1數(shù)組

①numpy.ones(shape, dtype)

np.ones: 創(chuàng)建指定形狀的數(shù)組,數(shù)組元素以 1 來填充

例如:np.ones([5,5],dtype=np.int32) #五行五列全是1的數(shù)組

②np.ones_like(a)

參數(shù)a為一個(gè)已知的數(shù)組,該函數(shù)根據(jù)數(shù)組a的形狀生成一個(gè)全1的數(shù)組

3.全是某個(gè)值的數(shù)組

①np.full(shape,fill_value)

根據(jù)指定的shape生成一個(gè)全是fill_value的數(shù)組

例如:np.full((4,7),8) #四行七列全是8的數(shù)組

②np.full_like(a,8) 生成一個(gè)與數(shù)組a相同,且里面元素都是8的數(shù)組

5.np.eye生成單位矩陣

np.eye(n)

生成一個(gè)n行n列的單位矩陣

6.np.arange選定數(shù)值范圍創(chuàng)建數(shù)組

語法 np.arange(start, stop, step, dtype)

start :起始值,默認(rèn)為0

stop : 終止值(不包含)

step : 步長,默認(rèn)為1

dtype :類型,可以省

例子:

np.arange(10)          #輸出array([0,1,2,3,4,5,6,7,8,9])

np.arange(2,15)         #輸出array([2,3,4,5,6,7,8,9,10,11,12,13,14])

np.arange(3,20,5)        #輸出array([3,8,13,18])

c=np.arange(9).reshape(3,3)#輸出array([[0, 1, 2],

[3, 4, 5],

[6, 7, 8]])

注意:使用np.arange生成的數(shù)組都是一維的,如何變成多維呢?使用數(shù)組的reshape方法

例如:np.arange(100).reshape(10,10)

方法的調(diào)用!!!! 用變量名.方法名

七.創(chuàng)建線性一維數(shù)組

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

start : 序列的起始值

stop : 序列的終止值,如果endpoint為true,該值包含于數(shù)列中

num : 要生成的等步長的樣本數(shù)量,默認(rèn)為50

endpoint : 該值為True時(shí),數(shù)列中包含stop值,反之不包含,默認(rèn)是True

retstep : 如果為True時(shí),生成的數(shù)組中會(huì)顯示間距,反之不顯示

dtype : ndarray的數(shù)據(jù)類型

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

八.生成隨機(jī)數(shù)組

1.numpy中有個(gè)隨機(jī)數(shù)子庫,叫做np.random。

里面包含很多隨機(jī)數(shù)生成算法,使用的時(shí)候,采用 np.random.方法名 的形式去使用。

①np.random.rand(d0,d1,...dn) 根據(jù)d0,d1,...dn的值生成[0,1)之間均勻分布的隨機(jī)數(shù)組。

②np.random.randn(d0,d1,...dn) 根據(jù)d0,d1,...dn的值生成[0,1)之間標(biāo)準(zhǔn)正太分布的隨機(jī)數(shù)組。

③np.random.randint(low,high,shape)在[low,high)區(qū)間生成shape形狀的隨機(jī)數(shù)組

例如:np.random.randint(1,10,[5,5])

np.random.randint(1,10) 生成1-10之間的隨機(jī)整數(shù)(一個(gè)整數(shù))

④np.random.seed(s) 隨機(jī)數(shù)種子函數(shù) : 參數(shù)必須是整數(shù)類型

⑤np.random.shuffle(a) 把數(shù)組a打亂順序

⑥np.random.choice(a,size,replace=False)

解釋:從數(shù)組a中,隨機(jī)等概率選取數(shù)據(jù),構(gòu)成shape形狀的數(shù)組。

當(dāng)replace的值默認(rèn)為True,此時(shí),數(shù)據(jù)可以被重復(fù)選取,當(dāng)不希望重復(fù)選取數(shù)據(jù)的時(shí)候,修改replace=False

⑦np.random.uniform(low,high,size):在[low,high)之間等概率的抽取元素,產(chǎn)生形狀為size的數(shù)組。

⑧np.random.normal(loc,scale,size):產(chǎn)生均值為loc,方差為scale的尺寸為size的符合正態(tài)分布的數(shù)組

⑨np.poisson:生成泊松分布的數(shù)組

九.數(shù)組的變換-改變形狀

1.reshape函數(shù): 改變數(shù)組的形狀,不改變數(shù)組元素的個(gè)數(shù),原數(shù)組不變,生成一個(gè)和原數(shù)組數(shù)據(jù)一樣的新數(shù)組。

有兩種reshape。一種是np的函數(shù),一種是數(shù)組的方法.

假設(shè)a=np.arange(100), 則a為含有100個(gè)元素的一維數(shù)組。則改變a為10*10的數(shù)組,

方法有:

b=np.reshape(a,(10,10))   # np的函數(shù)

b=a.reshape(10,10)     # 數(shù)組的方法

b=a.reshape((10,10))

執(zhí)行完上面的代碼后,b為10*10的數(shù)組,而a還是含有100個(gè)元素的1維數(shù)組

2.resize((shape),refcheck=True) #refcheck默認(rèn)是true,自身調(diào)用時(shí)須改成false

功能與reshape相同,但是改變?cè)瓟?shù)組

a.resize((1,9)) a變?yōu)橐痪S數(shù)組了。

①當(dāng)resize()是用np調(diào)用的時(shí)候,這時(shí)需要第一個(gè)參數(shù)是矩陣本身,然后記得加括號(hào),是改正后 的矩陣維度, 這時(shí)有返回值,可以打印出

例如:>>>a=np.arange(100)

>>> b=np.resize(a,(1,9))

>>> b

輸出:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])

②當(dāng)resize()是矩陣自己調(diào)用自己時(shí),函數(shù)沒有返回值,因此是None,但是也改變了ndarray的值,

這時(shí)再打印ndarray就是被resize()改變后的值 ***自身調(diào)用時(shí),refcheck=False

例如:>>>a=np.arange(100)

>>>a.resize((1,9),refcheck=False)

>>>a

結(jié)果:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])

十.數(shù)組的變換-扁平化

1.flatten()函數(shù),數(shù)組扁平化,也就是把多維數(shù)組變成一維數(shù)組,但是原數(shù)組不變。

假設(shè)a是一個(gè)二維數(shù)組,則a.flatten(),得到一個(gè)按行展開的一維數(shù)組

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

結(jié)果:array([[4, 2, 2],

[4, 1, 1],

[1, 3, 2]])

>>>a.flatten()

結(jié)果:array([4, 2, 2, 4, 1, 1, 1, 3, 2])

>>>a

結(jié)果:array([[4, 2, 2],

[4, 1, 1],

[1, 3, 2]])

2.a.astype()函數(shù) 改變類型的函數(shù)

b=a.astype(np.float16),生成一個(gè)新數(shù)組,新數(shù)組中與原數(shù)組元素相同,類型不同。

注意:原數(shù)組類型不發(fā)生變化

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

結(jié)果:array([[4, 2, 4],

[2, 3, 4],

[1, 1, 4]])

>>>a.astype(np.float16)

結(jié)果:array([[4., 2., 4.],

[2., 3., 4.],

[1., 1., 4.]], dtype=float16)

>>>a

結(jié)果:array([[4, 2, 4],

[2, 3, 4],

[1, 1, 4]])

3.a.tolist()函數(shù) 把數(shù)組a變成列表

a.T 與a.transpose() 數(shù)組的轉(zhuǎn)置 ,都不改變?cè)瓟?shù)組

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

結(jié)果:array([[4, 4, 4],

[3, 4, 2],

[3, 3, 1]])

>>>a.tolist()

結(jié)果:[[4, 4, 4], [3, 4, 2], [3, 3, 1]]

>>>a.T

結(jié)果:array([[4, 3, 3],

[4, 4, 3],

[4, 2, 1]])

>>>a.transpose()

結(jié)果:array([[4, 3, 3],

[4, 4, 3],

[4, 2, 1]])

>>>a

結(jié)果:array([[4, 4, 4],

[3, 4, 2],

[3, 3, 1]])

十一.常用函數(shù)及其使用

1.統(tǒng)計(jì)函數(shù)

使用方法:①np.函數(shù)名 ②數(shù)組變量.函數(shù)名

sum

求和

mean

求平均值

std

求標(biāo)準(zhǔn)差

var

求方差

median

求中位數(shù)

max

求最大值

min

求最小值

average()

加權(quán)平均數(shù)

舉例:

求和:

np.sum(a) 和 a.sum(): 求數(shù)組a中所有元素的和。

np.sum(a,axis=0)和 a.sum(axis=0) : 對(duì)數(shù)組a按行求和

np.sum(a,axis=1)和 a.sum(axis=0) : 對(duì)數(shù)組a按列求和

求均值

np.mean(a)和a.mean() 求數(shù)組a中所有元素的均值

np.mean(a,axis=0)和a.mean(axis=0) 求數(shù)組a中所有列的均值

np.mean(a,axis=1)和a.mean(axis=1) 求數(shù)組a中所有行的均值

其它統(tǒng)計(jì)函數(shù)的用法類似

2.數(shù)學(xué)函數(shù)

np.sin()

正弦

np.cos()

余弦

np.tan()

正切

np.arcsin()

反正弦

np.arccos()

反余弦

np.arctan()

反正切

np.degree()

將弧度轉(zhuǎn)換為角度

np.ptp(a)

計(jì)算數(shù)組a種最大值與最小值的差

3.舍入函數(shù)

np.around()

四舍五入

np.floor()

向下取整

np.ceil()

向上取整

4.排序函數(shù)

np.sort(a, axis, kind):對(duì)數(shù)組a按axis所指定的軸進(jìn)行排序,排序采用kind參數(shù)指定的算法。kind參數(shù)可以省略

十二.數(shù)組的索引與切片

1.一維數(shù)組的索引和切片

索引:a[0],a[-1]

切片:數(shù)組名[起始位置:結(jié)束位置:步長] a[1:10:2]

2.多維數(shù)組的索引和切片

索引:a[0,5,7] 多個(gè)維度之間用逗號(hào)分隔。

a[0,5,7]表示 第一維數(shù)據(jù),選第0個(gè),第2維數(shù)據(jù),選第5個(gè),第三維數(shù)據(jù),選第7個(gè)

切片: ①選擇多行: a[起始行:結(jié)束行]

②格式: a[m:n,p:q] 第一維選擇m到n行,不包括n,第2維選擇p到q列,不包括q

3.列表做索引:

①選擇多行,把多行包裝成列表,作為索引,

如:a[[0,3]]表示選擇第0行和第3行。當(dāng)選擇整行,不考慮列的時(shí)候,可以不寫列

②np.ix_函數(shù): 能把兩個(gè)一維數(shù)組 轉(zhuǎn)換為 一個(gè)用于選取方形區(qū)域的索引器。

實(shí)際意思就是,直接往np.ix_()里扔進(jìn)兩個(gè)一維數(shù)組[1,3],[2,4,5],就能先選1,3行,再選2,4,5列。

④布爾索引--條件索引

大于5的數(shù): a[a>5]

能被5整除的數(shù)a[a%5==0]

既能被2整除,又大于5的數(shù):b=a[a%2==0] c=b[b>5]

十三.ndarray類型數(shù)據(jù)的運(yùn)算

1.數(shù)組與標(biāo)量(單個(gè)數(shù)據(jù))之間的運(yùn)算:相當(dāng)于數(shù)組中的每個(gè)元素與標(biāo)量之間的運(yùn)算,例如:a=np.arange(10).reshape(2,5) a+5,相當(dāng)于a中每個(gè)元素都加了5,

2.數(shù)據(jù)規(guī)范化

如何規(guī)范化:隨機(jī)生成一個(gè)二維數(shù)組,對(duì)數(shù)組進(jìn)行規(guī)范化,即數(shù)組中每個(gè)元素減去數(shù)組元素的均值除以數(shù)組元素的方差:

a=a.mean()/a.std()

3.numpy中一元函數(shù):作用到元素上

對(duì)數(shù)組運(yùn)算,實(shí)際上是對(duì)數(shù)組中每個(gè)數(shù)據(jù)進(jìn)行運(yùn)算。

np.abs() 求數(shù)組中各個(gè)元素的絕對(duì)值,結(jié)果可以是整數(shù)或者實(shí)數(shù)

np.fabs() 求數(shù)組中各個(gè)元素的絕對(duì)值,結(jié)果是實(shí)數(shù)

np.sqrt() 求數(shù)組中各個(gè)元素的平方根

np.log np.log10 np.log2 計(jì)算數(shù)組中各個(gè)元素的自然對(duì)數(shù)、以10為底的對(duì)數(shù), 以2為底的對(duì)數(shù)

np.ceil()和np.floor分別表示的是對(duì)數(shù)組中各個(gè)元素進(jìn)行取整

np.rint()對(duì)數(shù)組中每個(gè)元素進(jìn)行四舍五入

np.sin() np.cos() np.tan() np.cosh() np.sinh() np.tanh() 對(duì)數(shù)組中的每個(gè)元素進(jìn)行三角運(yùn)算。

np.sign() 計(jì)算數(shù)組中每個(gè)元素的符號(hào)值,結(jié)果為1,0,或-1分別表示正數(shù),0和負(fù)數(shù)

np.exp() 計(jì)算數(shù)組中每個(gè)元素的指數(shù)值

4.numpy中的二元函數(shù)和二元運(yùn)算

兩個(gè)同尺寸的數(shù)組加減乘除,相當(dāng)于對(duì)應(yīng)元素的加減乘除

np.maximum(a,b) 求兩個(gè)數(shù)組a和b對(duì)應(yīng)元素的最大值

np.minimum(a,b) 求兩個(gè)數(shù)組a和b對(duì)應(yīng)元素的最小值

np.mod(a,b) a中元素除以b中元素的余數(shù)

np.copysign(x,y) 將數(shù)組y中各元素的符號(hào)賦值給x中元素的符號(hào)

關(guān)系運(yùn)算符號(hào):> 、>=、< 、<= 、 ==、 !=對(duì)應(yīng)元素進(jìn)行比較

a[a>b] 在a中找出比數(shù)組b大的數(shù)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python numpy库作用_python Numpy库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。