初體驗numpy和matplotlib

numpy初認(rèn)識

numpy是數(shù)值化的python,
Python list的替代品:numpy array
可以對整個數(shù)組進(jìn)行計算
操作方便砖织,且快速

height = [1.56,1.75,1.60,1.68]
weight = [45,65,50,52]
print weight / height ** 2

上面的代碼運(yùn)行錯誤

但是有了numpy著淆,這個問題是可以解決的

# 計算身體質(zhì)量指數(shù) (Body Mass Index, 簡稱BMI)
import numpy as np
height = [1.56,1.75,1.60,1.68]
weight = [45,65,50,52]
np_heigh = np.array(height)
np_weigh = np.array(weight)
print np_weigh / np_heigh ** 2
#輸出 [ 18.49112426  21.2244898   19.53125     18.42403628]

注意
numpy數(shù)組的元素的類型是相同的菇存。

>>> np.array([1.0,"is",True])
array(['1.0', 'is', 'True'],
      dtype='|S4')

分清list和numpy數(shù)組的區(qū)別,對list進(jìn)行 “ + ” 運(yùn)算是兩個list連接起來狰域,numpy數(shù)組則是對應(yīng)的元素逐個相加媳拴。

>>> python_list = [1,2,3]
>>> numpy_array = np.array([1,2,3])
>>> python_list + python_list  
[1, 2, 3, 1, 2, 3]        
>>> numpy_array + numpy_array
array([2, 4, 6])
>>> numpy_array + python_list
array([2, 4, 6])

numpy的構(gòu)造子集

先將上述的計算身體質(zhì)量指數(shù)的結(jié)果賦給變量bmi,其中bmi>19輸出了bool類型的list兆览,滿足這個條件的元素對于的值是True屈溉。對于bmi[bmi>19],則是選取到了值大于19的子集抬探。

>>> bmi = np_weigh / np_heigh ** 2
>>> print bmi
[ 18.49112426  21.2244898   19.53125     18.42403628]
>>> bmi > 19
array([False,  True,  True, False], dtype=bool)
>>> bmi[bmi>19]
array([ 21.2244898,  19.53125  ])
>>> bmi[1]
21.224489795918366

numpy數(shù)組的類型
numpy數(shù)組的類型:ndarray

>>> type(bmi)
<type 'numpy.ndarray'>

ndarray表示n維數(shù)組子巾,下面來看看二維數(shù)組,以及它的構(gòu)造子集是怎樣的小压。

其中的np_2d[:,1:3]线梗,逗號前面沒有指明第幾行,表示所有行都被選取怠益,逗號后是1:3表示選擇第2列和第3列的值仪搔。結(jié)果就是每行的第2列和第3列的值。

np_2d[:1,1:3]根據(jù)切片的特點蜻牢,冒號后面的數(shù)字不包含烤咧,結(jié)果也就是第0(即第一行)的第2列和第3列的值。

>>> np_2d = np.array([[1,2,3,4],[5,6,7,8]])
>>> np_2d
array([[1, 2, 3, 4],
       [5, 6, 7, 8]])
>>> np_2d.shape
(2, 4)
>>> np_2d[0]
array([1, 2, 3, 4])
>>> np_2d[0][2]
3
>>> np_2d[:,1:3]
array([[2, 3],
       [6, 7]])
>>> np_2d[1,:]
array([5, 6, 7, 8])
>>> np_2d[:1,1:3]
array([[2, 3]])

平均數(shù) mean 和中位數(shù) median
>>> np_dd = np.array([[1.56,40],[1.67,50],[1.60,45],[1.75,60],[1.68,53]])
>>> np.mean(np_dd[:,0])
1.6519999999999999
>>> np.median(np_dd[:,0])
1.6699999999999999

np.random.normal(平均數(shù)mean抢呆,標(biāo)準(zhǔn)差stdev煮嫌,size):給出均值為mean,標(biāo)準(zhǔn)差為stdev的高斯隨機(jī)數(shù)(場),當(dāng)size賦值時抱虐,例如:size=100立膛,表示返回100個高斯隨機(jī)數(shù)。

高斯分布的概率密度函數(shù) numpy.random.normal( )
numpy中 梯码,numpy.random.normal(loc=0.0, scale=1.0, size=None)
參數(shù)的意義為:
  loc:float
  概率分布的均值,對應(yīng)著整個分布的中心center
  scale:float
  概率分布的標(biāo)準(zhǔn)差好啰,對應(yīng)于分布的寬度轩娶,scale越大越矮胖,scale越小框往,越瘦高
  size:int or tuple of ints
  輸出的shape鳄抒,默認(rèn)為None,只輸出一個值
  我們更經(jīng)常會用到np.random.randn(size)所謂標(biāo)準(zhǔn)正太分布(μ=0, σ=1),對應(yīng)于np.random.normal(loc=0, scale=1, size)

np.column_stack(a,b):函數(shù)column_stack以列將一維數(shù)組合成二維數(shù)組

>>> height = np.round(np.random.normal(1.75,0.20,5000),2)
>>> weight = np.round(np.random.normal(60.32,15,5000),2)
>>> np_city = np.column_stack((height,weight))
>>> np_city
array([[  1.49,  70.15],
       [  2.12,  61.91],
       [  1.38,  58.53],
       ...,
       [  1.63,  74.36],
       [  1.44,  73.57],
       [  1.95,  52.57]])

可視化matplotlib
>>> import matplotlib.pyplot as plt
>>> year = [1950,1970,1990,2010]
>>> pop = [2.519,3.692,5.263,6.972]
>>> plt.plot(year,pop)
[<matplotlib.lines.Line2D object at 0x10a125110>]
>>> plt.show()

改成是散點圖许溅,改變一下函數(shù)即可

 plt.plot(year,pop)改為
 plt.scatter(year,pop)

直方圖

plt.hist(value,bins=3)

>>> value= [0.12,0.4,1.4,1.2,2.3,3.0,2.5,3.9,2.1,2.7,4.6,4.5,5.6]
>>> plt.hist(value,bins=3)
(array([ 4.,  5.,  4.]), array([ 0.12      ,  1.94666667,  3.77333333,  5.6       ]), <a list of 3 Patch objects>)
>>> plt.show()

個性化圖標(biāo)

顏色填充函數(shù) plt.fill_between()
設(shè)置x軸標(biāo)簽 plt.xlabel()
設(shè)置y軸標(biāo)簽 plt.ylabel()
設(shè)置圖標(biāo)標(biāo)題 plt.title()
設(shè)置y軸的刻度 plt.yticks([0,2,4,6,8,10])

>>> import matplotlib.pyplot as plt
>>> year = [1950,1970,1990,2010]
>>> pop = [1.0,3.9,6.8,9.9]
>>> plt.fill_between(year,pop,0,color='green')
<matplotlib.collections.PolyCollection object at 0x1132eb190>
>>> plt.xlabel('year')
<matplotlib.text.Text object at 0x11331d0d0>
>>> plt.ylabel('population')
<matplotlib.text.Text object at 0x1151b9690>
>>> plt.title('population projections')
<matplotlib.text.Text object at 0x11519b390>
>>> plt.yticks([0,2,4,6,8,10])
([<matplotlib.axis.YTick object at 0x10e85d990>, <matplotlib.axis.YTick object at 0x112f18850>, <matplotlib.axis.YTick object at 0x113365f50>, <matplotlib.axis.YTick object at 0x11336ae90>, <matplotlib.axis.YTick object at 0x1132d5510>, <matplotlib.axis.YTick object at 0x1134e5b90>], <a list of 6 Text yticklabel objects>)
>>> plt.show()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瓤鼻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贤重,更是在濱河造成了極大的恐慌茬祷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并蝗,死亡現(xiàn)場離奇詭異祭犯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)滚停,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門沃粗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人键畴,你說我怎么就攤上這事最盅。” “怎么了起惕?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵涡贱,是天一觀的道長。 經(jīng)常有香客問我疤祭,道長盼产,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任勺馆,我火速辦了婚禮戏售,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘草穆。我一直安慰自己灌灾,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布悲柱。 她就那樣靜靜地躺著锋喜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豌鸡。 梳的紋絲不亂的頭發(fā)上嘿般,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音涯冠,去河邊找鬼炉奴。 笑死,一個胖子當(dāng)著我的面吹牛蛇更,可吹牛的內(nèi)容都是我干的瞻赶。 我是一名探鬼主播赛糟,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼砸逊!你這毒婦竟也來了璧南?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤师逸,失蹤者是張志新(化名)和其女友劉穎司倚,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體字旭,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡对湃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遗淳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拍柒。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屈暗,靈堂內(nèi)的尸體忽然破棺而出拆讯,到底是詐尸還是另有隱情,我是刑警寧澤养叛,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布种呐,位于F島的核電站,受9級特大地震影響弃甥,放射性物質(zhì)發(fā)生泄漏爽室。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一淆攻、第九天 我趴在偏房一處隱蔽的房頂上張望阔墩。 院中可真熱鬧,春花似錦瓶珊、人聲如沸啸箫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽忘苛。三九已至,卻和暖如春唱较,著一層夾襖步出監(jiān)牢的瞬間扎唾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工南缓, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留胸遇,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓西乖,卻偏偏與公主長得像狐榔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子获雕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359