圖解Numpy精翻版,一文帶你入門Python數(shù)據(jù)處理

(關(guān)注'AI新視野'公眾號(hào),發(fā)送‘資料’二字鹰祸,免費(fèi)獲取50G人工智能視頻教程!)

本文精心翻譯自Jay Alammar的博客:https://jalammar.github.io/visual-numpy/密浑,其用圖解的方式詳細(xì)介紹了 NumPy的功能和使用示例蛙婴。

image

NumPy 是 Python 生態(tài)中數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算的基礎(chǔ)尔破。它極大地簡化了向量和矩陣的操作處理街图。Python 的一些主要軟件包(如 scikit-learn、SciPy懒构、pandas 和 tensorflow)都以 NumPy 作為其架構(gòu)的基礎(chǔ)部分餐济。除了能對(duì)數(shù)值數(shù)據(jù)進(jìn)行切片(slice)和切塊(dice)之外,使用 NumPy 還能為處理和調(diào)試上述庫中的高級(jí)實(shí)例帶來極大的便利痴脾。

本文將介紹 NumPy 的一些主要方法颤介,以及在將數(shù)據(jù)送入機(jī)器學(xué)習(xí)模型之前,numpy是如何表示不同類型數(shù)據(jù)(表格赞赖、圖像、文本等)的冤灾。

import numpy as np

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

通過傳遞一個(gè) python 列表前域,并使用 np.array()來創(chuàng)建 NumPy 數(shù)組。python 創(chuàng)建的數(shù)組如下圖右所示:

image

NumPy 提供了一些初始化數(shù)組的方法韵吨,例如 ones()匿垄、zeros() 和 random.random() 等方法。只要傳遞希望 NumPy 生成的元素維數(shù)即可:

image

一旦創(chuàng)建了數(shù)組归粉,就可以隨意操作啦椿疗。

數(shù)組運(yùn)算

下面創(chuàng)建兩個(gè) NumPy 數(shù)組來展示數(shù)組運(yùn)算功能。下圖兩個(gè)數(shù)組分別為 data 和 ones:

image

將它們按位置相加(即每行對(duì)應(yīng)相加)糠悼,直接輸入 data + ones 即可:

image

除了届榄,還可以進(jìn)行如下操作:

image

數(shù)組和單個(gè)數(shù)字之間也可以進(jìn)行運(yùn)算操作(即向量和標(biāo)量之間的運(yùn)算)。比如說倔喂,數(shù)組表示以英里為單位的距離铝条,希望將其單位轉(zhuǎn)換為千米。只需輸入 data * 1.6 即可:

image

NumPy 是通過廣播機(jī)制(broadcasting)來實(shí)現(xiàn)的席噩,通過判斷維數(shù)班缰,來推測(cè)要進(jìn)行的運(yùn)算。

索引

可以像對(duì) python 列表進(jìn)行切片一樣悼枢,對(duì) NumPy 數(shù)組進(jìn)行任意的索引和切片:

image

聚合

NumPy 還提供聚合功能:

image

除了 min埠忘、max 和 sum 之外,還可以使用 mean 得到平均值,使用 prod 得到所有元素的乘積莹妒,使用 std 得到標(biāo)準(zhǔn)差等等名船。

更多維度

上述的例子都是在一個(gè)維度上處理向量。NumPy 優(yōu)雅的關(guān)鍵在于能夠?qū)⑸鲜鏊蟹椒☉?yīng)用到任意數(shù)量的維度动羽。

創(chuàng)建矩陣

可以傳遞下列形狀的 python 列表包帚,使 NumPy 創(chuàng)建一個(gè)矩陣來表示它:

np.array([[1,2],[3,4]])

也可以使用上面提到的方法(ones()、zeros() 和 random.random())运吓,只要傳入一個(gè)描述創(chuàng)建的矩陣維數(shù)的元組即可:

image

矩陣運(yùn)算

如果兩個(gè)矩陣大小相同渴邦,可以使用算術(shù)運(yùn)算符(+-*/)對(duì)矩陣進(jìn)行加和乘。NumPy 將其視為 position-wise 運(yùn)算:

image

也可以對(duì)不同大小的兩個(gè)矩陣執(zhí)行此類算術(shù)運(yùn)算拘哨,但前提是某一個(gè)維度為 1(如矩陣只有一列或一行)谋梭,在這種情況下,NumPy 使用廣播規(guī)則執(zhí)行算術(shù)運(yùn)算:

點(diǎn)乘

算術(shù)運(yùn)算和矩陣運(yùn)算的一個(gè)關(guān)鍵區(qū)別是矩陣乘法使用點(diǎn)乘倦青。NumPy 為每個(gè)矩陣賦予 dot() 方法瓮床,可以用它與其他矩陣執(zhí)行點(diǎn)乘操作:

image

在上圖的右下角添加了矩陣維數(shù),來強(qiáng)調(diào)這兩個(gè)矩陣的臨近邊必須有相同的維數(shù)产镐“可以把上述運(yùn)算視為:

image

矩陣索引

當(dāng)處理矩陣時(shí),索引和切片操作將更加有用:

image

矩陣聚合

可以像聚合向量一樣聚合矩陣:

image

不僅可以聚合矩陣中的所有值癣亚,還可以使用 axis 參數(shù)執(zhí)行跨行或跨列聚合:

image

轉(zhuǎn)置和維度重塑

處理矩陣時(shí)的一個(gè)常見需求是旋轉(zhuǎn)矩陣丑掺。當(dāng)需要對(duì)兩個(gè)矩陣執(zhí)行點(diǎn)乘運(yùn)算并對(duì)齊它們共享的維度時(shí),通常需要進(jìn)行轉(zhuǎn)置述雾。NumPy 數(shù)組有一個(gè)方便的方法 T 來求得矩陣轉(zhuǎn)置:

image

在某些應(yīng)用中街州,需要對(duì)特定矩陣的變換維度。在機(jī)器學(xué)習(xí)應(yīng)用中玻孟,經(jīng)常會(huì)有當(dāng)某個(gè)模型對(duì)輸入形狀的要求與的數(shù)據(jù)集不同唆缴。NumPy 中的 reshape() 方法就可以發(fā)揮作用。只需將矩陣所需的新維度賦值給它即可黍翎∶婊眨可以為維度賦值-1,NumPy 可以根據(jù)的矩陣推斷出正確的維度:

image

更多維度

NumPy 可以在任意維度實(shí)現(xiàn)上述提到的所有內(nèi)容玩敏。其中心數(shù)據(jù)結(jié)構(gòu)被叫作 ndarray(N 維數(shù)組)斗忌。

image

在很多情況下,處理一個(gè)新的維度只需在 NumPy 函數(shù)的參數(shù)中添加一個(gè)逗號(hào):

image

實(shí)際用法

以下是 NumPy 可實(shí)現(xiàn)的有用功能的實(shí)例演示旺聚。

公式

均方差公式织阳,它是監(jiān)督機(jī)器學(xué)習(xí)模型處理回歸問題的核心:

image

在 NumPy 中實(shí)現(xiàn)該公式很容易:

image

這樣做的好處在于,NumPy 并不關(guān)心 predictions 和 labels 包含一個(gè)值還是一千個(gè)值(只要它們大小相同)砰粹∵蠖悖可以通過一個(gè)示例依次執(zhí)行上面代碼行中的四個(gè)操作:

image

預(yù)測(cè)和標(biāo)簽向量都包含三個(gè)值造挽,也就是說 n 的值為 3。減法后弄痹,得到的值如下:

image

然后將向量平方得到:

image

對(duì)這些值求和:

image

得到的結(jié)果即為該預(yù)測(cè)的誤差值和模型質(zhì)量評(píng)分饭入。

數(shù)據(jù)表達(dá)

電子表格、圖像肛真、音頻等需要處理和構(gòu)建模型所需的數(shù)據(jù)類型谐丢,其中很多都適合在 n 維數(shù)組中表示:

表格

電子表格就是二維矩陣。電子表格中的每個(gè)工作表都可以是它自己的變量蚓让。python 中最流行的表格抽象是 pandas 數(shù)據(jù)幀乾忱,其在 NumPy 之上構(gòu)建。

image

音頻

音頻文件是樣本的一維數(shù)組历极。每個(gè)樣本都是一個(gè)數(shù)字窄瘟,代表音頻信號(hào)的一小部分。CD 質(zhì)量的音頻每秒包含 44,100 個(gè)樣本趟卸,每個(gè)樣本是-65535 到 65536 之間的整數(shù)蹄葱。這意味著如果有一個(gè) 10 秒的 CD 質(zhì)量 WAVE 文件,可以將它加載到長度為 10 * 44,100 = 441,000 的 NumPy 數(shù)組中锄列。如果想要提取音頻的前一秒图云,只需將文件加載到 audio 的 NumPy 數(shù)組中,然后獲取 audio[:44100]邻邮。

下面是一段音頻文件:

image

其他時(shí)間序列數(shù)據(jù)也可以同樣表示(如股票隨時(shí)間變化的價(jià)格)琼稻。

圖像

圖像是尺寸(高度 x 寬度)的像素矩陣。

如果圖像是黑白(即灰度)的饶囚,則每個(gè)像素都可以用單個(gè)數(shù)字表示(通常在 0(黑色)和 255(白色)之間)。

下圖是一個(gè)圖像文件的部分:

image

如果圖像是彩色的鸠补,則每個(gè)像素由三個(gè)數(shù)字表示------紅萝风、綠和藍(lán)。在這種情況下紫岩,需要一個(gè)三維數(shù)組(因?yàn)槊總€(gè)單元格只能包含一個(gè)數(shù)字)规惰。因此彩色圖像由尺寸為(高 x 寬 x3)的 ndarray 表示:

image

歡迎關(guān)注全平臺(tái)AI自媒體 “AI新視野”,第一時(shí)間獲取人工智能學(xué)術(shù)泉蝌、產(chǎn)業(yè)前沿歇万!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市勋陪,隨后出現(xiàn)的幾起案子贪磺,更是在濱河造成了極大的恐慌,老刑警劉巖诅愚,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寒锚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刹前,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門泳赋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喇喉,你說我怎么就攤上這事祖今。” “怎么了拣技?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵千诬,是天一觀的道長。 經(jīng)常有香客問我过咬,道長大渤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任掸绞,我火速辦了婚禮泵三,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衔掸。我一直安慰自己烫幕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布敞映。 她就那樣靜靜地躺著较曼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪振愿。 梳的紋絲不亂的頭發(fā)上捷犹,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音冕末,去河邊找鬼萍歉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛档桃,可吹牛的內(nèi)容都是我干的枪孩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼藻肄,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蔑舞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘹屯,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤攻询,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抚垄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕窿,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谋逻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桐经。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毁兆。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阴挣,靈堂內(nèi)的尸體忽然破棺而出气堕,到底是詐尸還是另有隱情,我是刑警寧澤畔咧,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布茎芭,位于F島的核電站,受9級(jí)特大地震影響誓沸,放射性物質(zhì)發(fā)生泄漏梅桩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一拜隧、第九天 我趴在偏房一處隱蔽的房頂上張望宿百。 院中可真熱鬧,春花似錦洪添、人聲如沸垦页。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痊焊。三九已至,卻和暖如春忿峻,著一層夾襖步出監(jiān)牢的瞬間薄啥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工逛尚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罪佳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓黑低,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酌毡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子克握,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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

  • NumPy包是python生態(tài)系統(tǒng)中數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和科學(xué)計(jì)算的主力枷踏。 它極大地簡化了向量和矩陣的操作菩暗。Pyth...
    statr閱讀 896評(píng)論 0 2
  • 基礎(chǔ)篇NumPy的主要對(duì)象是同種元素的多維數(shù)組。這是一個(gè)所有的元素都是一種類型旭蠕、通過一個(gè)正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,133評(píng)論 0 18
  • 我們每個(gè)人都可以思考停团,而我們思考的來源在哪了旷坦!我想眾所周知大家的第一個(gè)回答就是大腦,沒錯(cuò)我們?cè)谶M(jìn)行一件事情的時(shí)候都...
    moon_dark閱讀 360評(píng)論 0 0
  • 非是它樓起高閣 危寒凌云不可攀 自少曾睹此矗隅 忘卻湖河映恚空天時(shí) 一縷清風(fēng) 洗凈 惶惶的奔狂 我在畫樓上 觀望你...
    牛谷河畔閱讀 311評(píng)論 2 1
  • 請(qǐng)不要在最能吃苦的時(shí)候選擇瀟灑舌胶,沒有人的青春是在紅地毯上走過捆蜀,既然夢(mèng)想成為那個(gè)別人無法企及的自我,就應(yīng)該選擇一條屬...
    止于燈下閱讀 235評(píng)論 0 0