文科生學(xué)Python系列7: Numpy數(shù)組/索引和切片

第四課:本課內(nèi)容:

? 0. 導(dǎo)入 NumPy 包

? 1. 創(chuàng)建 NumPy 數(shù)組

? 2. 索引和切片

? 3. 讀取文件

? 4. 布爾型索引

? 5. 數(shù)組的運(yùn)算

? 6. 常用函數(shù)舉例

NumPy 是 Numerical Python 的簡稱芋哭,是 Python 科學(xué)計(jì)算的核心包复局,也是高性能科學(xué)計(jì)算和數(shù)據(jù)分析的基礎(chǔ)包。

numpy特性:

具備功能非常強(qiáng)大的多維數(shù)組

具備對整個(gè)數(shù)組進(jìn)行快速運(yùn)算的函數(shù)

線性代數(shù)計(jì)算 隨機(jī)數(shù)生成

可集成C/C++以及Fortran等語言

Numpy數(shù)組中的元素只能是同一種數(shù)據(jù)類型

Numpy數(shù)組的運(yùn)算傍念,更簡潔且高效歪架。

?0. 導(dǎo)入 NumPy 包

導(dǎo)入Numpy包

用as語句倒入numpy包股冗,后面用簡寫的 np ,就可以使用了和蚪。


1. 創(chuàng)建 NumPy 數(shù)組

numpy的一個(gè)重要對象(object)是 ndarray魁瞪, 也稱 NumPy 數(shù)組

? ndarray 是 Multidimensional Array的縮寫,中文稱為多(multi)維(dimensional)數(shù)組(array)惠呼。

? 數(shù)組可以存儲(chǔ)大量數(shù)據(jù)并在其進(jìn)行數(shù)學(xué)運(yùn)算导俘,我們可以使用數(shù)組在一塊數(shù)據(jù)上進(jìn)行操作從而避免使用循環(huán)來操作單個(gè)元素。

1-1 一維數(shù)組

一維數(shù)組

In[ 2 ] 中是把1剔蹋,2旅薄,3這個(gè)列表轉(zhuǎn)換成一維數(shù)組。賦值定義成 “ arr1d ”泣崩。

In[ 3 ] 區(qū)分賦值的 “ arr1d ” 類型少梁,返回結(jié)果是一個(gè)Numpy類型的數(shù)組。

In[ 4 ] 返回值是1矫付,代表是一個(gè)一維數(shù)組凯沪。

1-2 二維數(shù)組

二維數(shù)組

上圖是把一個(gè)二維列表轉(zhuǎn)換成一個(gè)二維數(shù)組,用和一維數(shù)組一樣的方法买优。

二維數(shù)組就類似一個(gè)矩陣

? 0軸 (axis=0) 是列妨马,也就是垂直方向

? 1軸 (axis=1) 是行,也就是水平方向

? 矩陣對于數(shù)據(jù)分析來說杀赢,是一個(gè)重要的概念烘跺,一般用列來代表觀測對象的各種屬性、特征脂崔,用行來記錄每一個(gè)觀測對象的一組測量數(shù)據(jù)

此時(shí)文科生覺得滤淳,這不是和我大學(xué)上的線性代數(shù)長得一毛一樣嗎??好像有點(diǎn)懂了~~

二維數(shù)組

看來Numpy中,是用 ndim 來找出數(shù)組是多少維的砌左。第7行是可以顯示整個(gè)數(shù)組的行和列是多少脖咐。能夠想象可以使用的地方就是那些超級長超級寬的一堆數(shù)組里面,做一些統(tǒng)計(jì)之前可以先看看整個(gè)數(shù)組有多巨大汇歹,或者通過這樣的定義屁擅,讓后面的數(shù)據(jù)統(tǒng)計(jì)可以更加方便。

這里還是要說說我的看法秤朗,往往在學(xué)習(xí)一樣新的東西時(shí)煤蹭,開始打基礎(chǔ)的過程挺漫長挺難熬的,畢竟幾乎都是以前沒有接觸過的新詞匯,理解了一個(gè)新的硝皂,可能昨天記下的就忘記了常挚。這樣反復(fù)發(fā)過程經(jīng)常都會(huì)懷疑人生:“我他媽學(xué)這破玩意干什么?;铩奄毡!”

然后又成功從入門到放棄。

所以我在學(xué)習(xí)的過程之中贝或,盡量多地去想吼过,它能夠在什么地方可以使用,使用場景是什么咪奖,要是去用的話怎么用盗忱,可以發(fā)揮什么作用。我們這些功利的人類啊羊赵,往往在這樣腦補(bǔ)的情況下趟佃,加重了它們的重要性,于是覺得自己應(yīng)該繼續(xù)學(xué)下去昧捷,可以讓后面的工作加快一點(diǎn)闲昭。催眠自己,有時(shí)候挺管用的??

1-3 其他快速創(chuàng)建數(shù)組的函數(shù)

? 一維數(shù)組

一維數(shù)組

老師說靡挥,上面這幾個(gè)例子都太簡單了序矩,然后就一掠而過了??????看起來好像比較簡單,能夠理解跋破。就是不知道為什么要弄未初始化的垃圾值簸淀,我告訴自己不要陷進(jìn)“垃圾值”這個(gè)詞里面嘗試?yán)斫鉃槭裁唇凶隼担菬o法停止這個(gè)大腦不去想搬V颉啃擦!

一維數(shù)組

arange是range函數(shù)的數(shù)組版囊蓝,輸出的值從0到9饿悬,不包括10,共十個(gè)數(shù)字聚霜。注意這里的括號(hào)狡恬,先用方括號(hào)括里面,然后外面是圓括號(hào)蝎宇。我的理解是里面類似數(shù)列一樣的一排元素弟劲,外面的圓括號(hào)是為了迎合數(shù)組里array這個(gè)函數(shù),顯示這組數(shù)組是array的人姥芥。

上面的11是顯示一排范圍內(nèi)的值兔乞,而12是在一個(gè)范圍內(nèi)的值里面挑出滿足條件的元素出來,形成一個(gè)新的數(shù)列。這個(gè)條件就是:從2開始(包括2)開始算起庸追,每個(gè)值從2開始加2霍骄,到10(不包括10)結(jié)束。其實(shí)也就是從2到10 的偶數(shù)數(shù)列淡溯。這個(gè)公式是這樣的:

?np.arange(起始值读整,終值(不包含終值),步長)

一維數(shù)組的隨機(jī)數(shù)

創(chuàng)建0到1點(diǎn)隨機(jī)數(shù)咱娶,請注意0左邊是方括號(hào)米间,1右邊是圓括號(hào)(我也不知道為什么要注意??就是看出來是不一樣的,但是不知道為什么要有區(qū)別)

13這個(gè)例子上課的時(shí)候我就有點(diǎn)迷惑膘侮,難道電腦隨機(jī)出來的小數(shù)點(diǎn)后位數(shù)都是一致的嗎屈糊?看起來太整齊了,都是8位數(shù)扒砹恕另玖!憑什么就是8?

14這個(gè)例子老師直接跳過了表伦。谦去。。沒看懂哦蹦哼,1到10的隨機(jī)整數(shù)鳄哭,后面的size=8 是啥?

? 二維數(shù)組

二維數(shù)組

一維數(shù)組和二維數(shù)組的區(qū)別就是行數(shù)的區(qū)別纲熏,一維的是1行妆丘,二維的是N行。

一維數(shù)組創(chuàng)建全0數(shù)組的語法是:

np.zeros(5)

創(chuàng)建一個(gè)5個(gè)0的數(shù)組局劲;二維數(shù)組中勺拣,創(chuàng)建一個(gè)全0數(shù)組,語法也是一樣的鱼填,只不過這里是需要設(shè)定行和列药有,2行3列的:

np.zeros ( (2,3) )

我又要說,注意括號(hào)了苹丸。兩個(gè)圓括號(hào)愤惰。

上課的時(shí)候小伙伴問隨機(jī)數(shù)組有什么用,我當(dāng)時(shí)想的是:抽獎(jiǎng)白咐怼宦言!像轉(zhuǎn)發(fā)微博中經(jīng)常會(huì)用到公證的第三方來顯示公平公正公開,我猜測抽獎(jiǎng)用的工具就是類似這樣的程序商模。只不過別人設(shè)定的是整數(shù)的奠旺,我們上課的例子是有8位小數(shù)點(diǎn)的蜘澜。

? ?索引和切片的混用

方括號(hào)第一個(gè)參數(shù)指定要取的行位置,第二個(gè)參數(shù)指定要取得列位置响疚,中間使用逗號(hào)隔開.

一維數(shù)組:使用[ ]運(yùn)算符兼都,類似于Python列表。

二維數(shù)組:方括號(hào)中第一個(gè)參數(shù)對應(yīng)行稽寒,第二個(gè)參數(shù)對應(yīng)行扮碧,中間用逗號(hào)隔開。

數(shù)組切片是原始數(shù)組的視圖杏糙,也就是說數(shù)據(jù)不會(huì)被復(fù)制慎王,任何修改都會(huì)影響到原有的數(shù)組上。

一維數(shù)組與一維數(shù)組的索引:

一維數(shù)組

一維數(shù)組 切片:

一維數(shù)組

更改數(shù)組切片后:

一維數(shù)組的切片更改

這個(gè)例子就是上面灰色區(qū)域說的 “數(shù)組切片是原始數(shù)組的視圖宏侍,也就是說數(shù)據(jù)不會(huì)被復(fù)制赖淤,任何修改都會(huì)影響到原有的數(shù)組上×潞樱” 后面我們對數(shù)組進(jìn)行的任何修改咱旱,都會(huì)更新此數(shù)組。它們是墻頭草绷耍。吐限。。誰最新就往哪邊倒??

而有時(shí)候我們是需要更改數(shù)據(jù)褂始,但是又想在后面的操作繼續(xù)使用原始數(shù)據(jù)诸典,也就是,在不更改原始數(shù)據(jù)的基礎(chǔ)上崎苗,修改數(shù)組中的元素狐粱。這個(gè)聽起來挺像word文檔里面的 “另保存” 的。這個(gè)時(shí)候我們需要用到 .copy() 這個(gè)語法胆数。

數(shù)組的新建“另保存”

一個(gè)都沒少的原始數(shù)組們肌蜻。而重新賦值的 arr3 是這樣的:

修改數(shù)組

二維數(shù)組的索引和切片:

二維數(shù)組

和一維數(shù)組不一樣的,首先就是前綴必尼,這里是用 mat 凌外,一維數(shù)組是用 arr 嘁灯;

二維數(shù)組有一個(gè)一維數(shù)組沒有的 shape私爷,來定義限制整個(gè)數(shù)組的行和列仅政。

獲取二維數(shù)組的某一行:

? mat[起始行:終結(jié)行] :從起始行開始苛骨,但不包括終結(jié)行

? mat[起始行:] : 從起始行到最后一行

? mat[: 終結(jié)行] : 從第0行到終結(jié)行但不包括終結(jié)行

獲取二維數(shù)組的某一行

方括號(hào)包裹元素庆寺,獲取第0行涨椒。

獲取二維數(shù)組的行

還是方括號(hào)镣陕,獲取1-3行斑司,不包括第三行渗饮。

? 獲取二維數(shù)組的行和列

? 查看某一個(gè)元素但汞,有兩種方式:

這里的例子還是這個(gè)4*4的表格:

例子原始數(shù)據(jù)


查找第1行第3列的元素,2種方法


查找0-3行互站,第1列的內(nèi)容


二維數(shù)組的切片

數(shù)字后面加冒號(hào)表示 從這個(gè)數(shù)字開始私蕾,直到這個(gè)數(shù)組的世界盡頭!

作業(yè)4-1:

生成一個(gè)3行5列的數(shù)組胡桃,元素值從1到15排列

1 ,取出其中的第1行踩叭,第3列元素

2 ,取出其中的第2行到最后一行

3, 取出其中的第1行到第2行,第1列到最后一列

4 ,取出其中的第0行和第2行翠胰,第三列

我第一次覺得作業(yè)那么順暢H荼础!V啊斤富!竟然都做出來了,證明這作業(yè)不難锻狗!??

你們看完這課程內(nèi)容應(yīng)該也能順利做出來的满力,因?yàn)槔蠋煵贾玫淖鳂I(yè)幾乎是把答案寫在題目上了,想要把第0行當(dāng)作第1行都沒辦法犯錯(cuò)??轻纪。

試試吧油额。

我做的如下,大家看看我有沒有出錯(cuò)吧~


作業(yè)


剩余第四課的內(nèi)容:導(dǎo)入 NumPy 包/創(chuàng)建 NumPy 數(shù)組/?索引和切片

? 3. 讀取文件

? 4. 布爾型索引

? 5. 數(shù)組的運(yùn)算

? 6. 常用函數(shù)舉例

明天繼續(xù)碼第四課剩余內(nèi)容喲~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刻帚,一起剝皮案震驚了整個(gè)濱河市悔耘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌我擂,老刑警劉巖衬以,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異校摩,居然都是意外死亡看峻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門衙吩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來互妓,“玉大人,你說我怎么就攤上這事坤塞》朊悖” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵摹芙,是天一觀的道長灼狰。 經(jīng)常有香客問我,道長浮禾,這世上最難降的妖魔是什么交胚? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任份汗,我火速辦了婚禮,結(jié)果婚禮上蝴簇,老公的妹妹穿的比我還像新娘杯活。我一直安慰自己,他們只是感情好熬词,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布旁钧。 她就那樣靜靜地躺著,像睡著了一般互拾。 火紅的嫁衣襯著肌膚如雪歪今。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天摩幔,我揣著相機(jī)與錄音彤委,去河邊找鬼。 笑死或衡,一個(gè)胖子當(dāng)著我的面吹牛焦影,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播封断,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼斯辰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坡疼?” 一聲冷哼從身側(cè)響起彬呻,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柄瑰,沒想到半個(gè)月后闸氮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡教沾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年蒲跨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片授翻。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡或悲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出堪唐,到底是詐尸還是另有隱情巡语,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布淮菠,位于F島的核電站男公,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏兜材。R本人自食惡果不足惜理澎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一逞力、第九天 我趴在偏房一處隱蔽的房頂上張望曙寡。 院中可真熱鬧糠爬,春花似錦、人聲如沸举庶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽户侥。三九已至镀琉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕊唐,已是汗流浹背屋摔。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留替梨,地道東北人钓试。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像副瀑,于是被迫代替她去往敵國和親弓熏。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容