周一啦,工作使我快樂(lè)使我開(kāi)心,這一期的Python學(xué)習(xí)教程想跟大家講一下Numpy系列,創(chuàng)建數(shù)組的三大絕招,絕招哈,都傳授給你們啦!
創(chuàng)建Numpy數(shù)組的三大絕招
1.使用函數(shù)np.array
2.使用便捷的內(nèi)置函數(shù)
3.使用隨機(jī)庫(kù)函數(shù)
Numpy庫(kù)的核心對(duì)象便是ndarray數(shù)組,又稱n維數(shù)組。要知道,基礎(chǔ)數(shù)據(jù)的統(tǒng)計(jì)、變換等運(yùn)算都是基于數(shù)組對(duì)象的,所以對(duì)于ndarray的掌握至關(guān)重要。而所謂工欲善其事必先利其器,工具我們暫時(shí)是搞明白了,至于怎么打造出來(lái),這塊得好好講講了。這篇Python學(xué)習(xí)教程的主要目的是幫助同學(xué)們更好地了解創(chuàng)建Numpy數(shù)組的三大絕招。
看過(guò)我Python學(xué)習(xí)教程的童鞋們,在“人生苦短,我用Python”的取經(jīng)之路上,想必都知道list列表,這是Python內(nèi)置的一種基本數(shù)據(jù)類型。而ndarray數(shù)組便可通過(guò)對(duì)list的轉(zhuǎn)換來(lái)進(jìn)行創(chuàng)建,只要簡(jiǎn)單地將Python列表傳遞給數(shù)組函數(shù)np.array()即可。
a = np.array([1,2,3])a
array([1, 2, 3])
當(dāng)然,上例得到的只是一維數(shù)組,想要多維的,請(qǐng)將一系列的列表傳遞給數(shù)組函數(shù),但要保證()內(nèi)部的數(shù)據(jù)類型是list,這點(diǎn)很重要。
b = np.array([[1, 2, 3], [4, 5, 6]])b
array([[1, 2, 3],[4, 5, 6]])
就這樣,我們依次創(chuàng)建了一維數(shù)組a與二維數(shù)組b,創(chuàng)建ndarray數(shù)組的第一招是不是很簡(jiǎn)單呢,你get到了嗎?
在Numpy庫(kù)中,np.array()給我們提供了創(chuàng)建數(shù)組的簡(jiǎn)單方法,讓我們卯足了盡頭,準(zhǔn)備開(kāi)始揭開(kāi)Numpy的面紗,大干一場(chǎng)。但突然,一盆冷水潑身上,關(guān)鍵問(wèn)題來(lái)了,如果我們想創(chuàng)建由0到19的數(shù)字序列數(shù)組,那是不是得一個(gè)數(shù)字一個(gè)數(shù)字地敲,創(chuàng)建0到100的呢?創(chuàng)建多維的呢?不敢想象!??!
其實(shí),Numpy庫(kù)很人性化地為我們提供了非常多的內(nèi)置函數(shù),用于便捷地創(chuàng)建數(shù)組,下面我們來(lái)看一看
1.np.arange(),創(chuàng)建遞增序列
#創(chuàng)建一個(gè)值范圍為0到19的數(shù)組c = np.arange(20)#arange搭配reshape,創(chuàng)建從0-19的4行5列數(shù)組d = np.arange(20).reshape(4,5)d
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
注意:這里要掌握arange()的結(jié)構(gòu),np.arange(x)為左閉右開(kāi)結(jié)構(gòu),數(shù)據(jù)從0開(kāi)始,到x-1結(jié)束,生成規(guī)則遞增序列,同時(shí)也可以指定arange的3s參數(shù),start、stop與step。
2.np.ones(shape=,dtype=),創(chuàng)建全為1的數(shù)組矩陣
e = np.ones((3,4))e
array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]])
注意:shape為元組格式,dtype可以決定數(shù)據(jù)類型
3.np.zeros(shape=,dtype=),創(chuàng)建全為0的數(shù)組
f = np.zeros((2,4))
array([[0., 0., 0., 0.], [0., 0., 0., 0.]])
4.np.eye(M),創(chuàng)建對(duì)角線為1,其余為0 的數(shù)組
g = np.eye(3)
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
5.np.full(shape=,fill_value=),任意填充數(shù)字
h = np.full((2,2), 3)
array([[3, 3], [3, 3]])
np.linspace(start,stop,num),線性區(qū)間等分,linspace是左閉右閉
#將0-10區(qū)間等分4份i = np.linspace(0, 10, num=4)i
array([ 0., 3.333, 6.666, 10.])
以上的6個(gè)簡(jiǎn)單操作,是不是非常貼心呢,狂敲666有木有,下面豁出去了,再為各位童鞋們們獻(xiàn)上最后一招大絕招!
Numpy也提供random模塊,來(lái)幫助我們?nèi)?chuàng)建隨機(jī)性的序列,從此生成一組隨機(jī)數(shù)就變得so easy,下面我們就來(lái)瞧一瞧。
1.np.random.random(size),生成0-1的隨機(jī)數(shù),左閉右開(kāi),size表示個(gè)數(shù),可以是一維、二維或者三維
np.random.random((2,2))
array([[0.31153256 , 0.128392402], [0.023428592, 0.324950205]])
可以看出,生成的數(shù)據(jù)是集中在0-1的2行2列隨機(jī)數(shù)據(jù)。
2.np.random.randint(low=,hight=,size=),生成整數(shù)類型的隨機(jī)數(shù),low最小值,hight最大值,size個(gè)數(shù)
np.random.int(0,10,3)
array([1 , 5 , 7 ])
3.np.random.randn(size),生成標(biāo)準(zhǔn)正態(tài)分布,size個(gè)數(shù)
代碼自己挖掘,敲起來(lái)試試看
4.np.random.normal(loc,scale,size),生成非標(biāo)準(zhǔn)正態(tài)分布
代碼自己挖掘,敲起來(lái)試試看呀
對(duì)于隨機(jī)數(shù)的創(chuàng)建,姑且掌握這4個(gè)技巧,所謂來(lái)日方長(zhǎng),后面如果接觸到的未提及的方法,再來(lái)詳細(xì)聊聊。更多的Python學(xué)習(xí)教程也會(huì)繼續(xù)為大家更新哦!
聯(lián)系客服