python numpy库作用_python Numpy库
一.導(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克接管后 推特在App Store的
- 下一篇: python文本解析_如何通过pytho