精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

最詳細的 NumPy 圖解教程!

數據分析與開發 ? 來源:大數據文摘 ? 作者:大數據文摘 ? 2021-06-09 18:03 ? 次閱讀

NumPy是Python中用于數據分析、機器學習、科學計算的重要軟件包。它極大地簡化了向量和矩陣的操作及處理。python的不少數據處理軟件包依賴于NumPy作為其基礎架構的核心部分(例如scikit-learn、SciPy、pandas和tensorflow)。除了數據切片和數據切塊的功能之外,掌握numpy也使得開發者在使用各數據處理庫調試和處理復雜用例時更具優勢。

在本文中,將介紹NumPy的主要用法,以及它如何呈現不同類型的數據(表格,圖像,文本等),這些經Numpy處理后的數據將成為機器學習模型的輸入。

NumPy中的數組操作

創建數組

我們可以通過將python列表傳入np.array()來創建一個NumPy數組(也就是強大的ndarray)。在下面的例子里,創建出的數組如右邊所示,通常情況下,我們希望NumPy為我們初始化數組的值,為此NumPy提供了諸如ones(),zeros()和random.random()之類的方法。我們只需傳入元素個數即可:

d3cfeb46-c540-11eb-9e57-12bb97331649.jpg

一旦我們創建了數組,我們就可以用其做點有趣的應用了,文摘菌將在下文展開說明。

數組的算術運算

讓我們創建兩個NumPy數組,分別稱作data和ones:

d3e802c6-c540-11eb-9e57-12bb97331649.png

若要計算兩個數組的加法,只需簡單地敲入data + ones,就可以實現對應位置上的數據相加的操作(即每行數據進行相加),這種操作比循環讀取數組的方法代碼實現更加簡潔。

當然,在此基礎上舉一反三,也可以實現減法、乘法和除法等操作:

d40961aa-c540-11eb-9e57-12bb97331649.jpg

許多情況下,我們希望進行數組和單個數值的操作(也稱作向量和標量之間的操作)。比如:如果數組表示的是以英里為單位的距離,我們的目標是將其轉換為公里數。可以簡單的寫作data * 1.6:

d42978a0-c540-11eb-9e57-12bb97331649.png

NumPy通過數組廣播(broadcasting)知道這種操作需要和數組的每個元素相乘。

數組的切片操作

我們可以像python列表操作那樣對NumPy數組進行索引和切片,如下圖所示:

d43fb14c-c540-11eb-9e57-12bb97331649.png

聚合函數

NumPy為我們帶來的便利還有聚合函數,聚合函數可以將數據進行壓縮,統計數組中的一些特征值:

d44b62b2-c540-11eb-9e57-12bb97331649.jpg

除了min,max和sum等函數,還有mean(均值),prod(數據乘法)計算所有元素的乘積,std(標準差),等等。上面的所有例子都在一個維度上處理向量。除此之外,NumPy之美的一個關鍵之處是它能夠將之前所看到的所有函數應用到任意維度上。

NumPy中的矩陣操作

創建矩陣

我們可以通過將二維列表傳給Numpy來創建矩陣。

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

除此外,也可以使用上文提到的ones()、zeros()和random.random()來創建矩陣,只需傳入一個元組來描述矩陣的維度:

d4688572-c540-11eb-9e57-12bb97331649.jpg

矩陣的算術運算

對于大小相同的兩個矩陣,我們可以使用算術運算符(+-*/)將其相加或者相乘。NumPy對這類運算采用對應位置(position-wise)操作處理:

d476619c-c540-11eb-9e57-12bb97331649.png

對于不同大小的矩陣,只有兩個矩陣的維度同為1時(例如矩陣只有一列或一行),我們才能進行這些算術運算,在這種情況下,NumPy使用廣播規則(broadcast)進行操作處理:

d4a5dd46-c540-11eb-9e57-12bb97331649.jpg

與算術運算有很大區別是使用點積的矩陣乘法。NumPy提供了dot()方法,可用于矩陣之間進行點積運算:

d4d56c32-c540-11eb-9e57-12bb97331649.png

上圖的底部添加了矩陣尺寸,以強調運算的兩個矩陣在列和行必須相等。可以將此操作圖解為如下所示:

d4eb2338-c540-11eb-9e57-12bb97331649.jpg

矩陣的切片和聚合

索引和切片功能在操作矩陣時變得更加有用。可以在不同維度上使用索引操作來對數據進行切片。

我們可以像聚合向量一樣聚合矩陣。

不僅可以聚合矩陣中的所有值,還可以使用axis參數指定行和列的聚合。

矩陣的轉置和重構

處理矩陣時經常需要對矩陣進行轉置操作,常見的情況如計算兩個矩陣的點積。NumPy數組的屬性T可用于獲取矩陣的轉置。

在較為復雜的用例中,你可能會發現自己需要改變某個矩陣的維度。這在機器學習應用中很常見,例如模型的輸入矩陣形狀與數據集不同,可以使用NumPy的reshape()方法。只需將矩陣所需的新維度傳入即可。也可以傳入-1,NumPy可以根據你的矩陣推斷出正確的維度。

上文中的所有功能都適用于多維數據,其中心數據結構稱為ndarray(N維數組)。

很多時候,改變維度只需在NumPy函數的參數中添加一個逗號,如下圖所示:

d59f8882-c540-11eb-9e57-12bb97331649.jpg

NumPy中的公式應用示例

NumPy的關鍵用例是實現適用于矩陣和向量的數學公式。這也Python中常用NumPy的原因。例如,均方誤差是監督機器學習模型處理回歸問題的核心:

d5b3750e-c540-11eb-9e57-12bb97331649.png

在NumPy中可以很容易地實現均方誤差:

d63e1ec0-c540-11eb-9e57-12bb97331649.jpg

這樣做的好處是,numpy無需考慮predictions與labels具體包含的值。文摘菌將通過一個示例來逐步執行上面代碼行中的四個操作:

d66c614a-c540-11eb-9e57-12bb97331649.png

預測(predictions)和標簽(labels)向量都包含三個值。這意味著n的值為3。在我們執行減法后,我們最終得到如下值:

d68c8c5e-c540-11eb-9e57-12bb97331649.png

然后我們可以計算向量中各值的平方:

d696a7a2-c540-11eb-9e57-12bb97331649.png

現在我們對這些值求和:

d6abd0d2-c540-11eb-9e57-12bb97331649.png

最終得到該預測的誤差值和模型質量分數。

用NumPy表示日常數據

日常接觸到的數據類型,如電子表格,圖像,音頻。。.。。.等,如何表示呢?Numpy可以解決這個問題。

表和電子表格

電子表格或數據表都是二維矩陣。電子表格中的每個工作表都可以是自己的變量。python中類似的結構是pandas數據幀(dataframe),它實際上使用NumPy來構建的。

音頻和時間序列

音頻文件是一維樣本數組。每個樣本都是代表一小段音頻信號的數字。CD質量的音頻每秒可能有44,100個采樣樣本,每個樣本是一個-65535到65536之間的整數。這意味著如果你有一個10秒的CD質量的WAVE文件,你可以將它加載到長度為10 * 44,100 = 441,000個樣本的NumPy數組中。想要提取音頻的第一秒?只需將文件加載到我們稱之為audio的NumPy數組中,然后截取audio[:44100]。

時間序列數據也是如此(例如,股票價格隨時間變化的序列)。

圖像

圖像是大小為(高度×寬度)的像素矩陣。如果圖像是黑白圖像(也稱為灰度圖像),則每個像素可以由單個數字表示(通常在0(黑色)和255(白色)之間)。如果對圖像做處理,裁剪圖像的左上角10 x 10大小的一塊像素區域,用NumPy中的image[:10,:10]就可以實現。

如果圖像是彩色的,則每個像素由三個數字表示 :紅色,綠色和藍色。在這種情況下,我們需要第三維(因為每個單元格只能包含一個數字)。因此彩色圖像由尺寸為(高x寬x 3)的ndarray表示。

語言

如果我們處理文本,情況就會有所不同。用數字表示文本需要兩個步驟,構建詞匯表(模型知道的所有唯一單詞的清單)和嵌入(embedding)。讓我們看看用數字表示這個(翻譯的)古語引用的步驟:“Have the bards who preceded me left any theme unsung?”

模型需要先訓練大量文本才能用數字表示這位戰場詩人的詩句。我們可以讓模型處理一個小數據集,并使用這個數據集來構建一個詞匯表(71,290個單詞)。

然后可以將句子劃分成一系列“詞”token(基于通用規則的單詞或單詞部分)。

然后我們用詞匯表中的id替換每個單詞。

這些ID仍然不能為模型提供有價值的信息。因此,在將一系列單詞送入模型之前,需要使用嵌入(embedding)來替換token/單詞(在本例子中使用50維度的word2vec嵌入)。

你可以看到此NumPy數組的維度為[embedding_dimension x sequence_length]。

在實踐中,這些數值不一定是這樣的,但我以這種方式呈現它是為了視覺上的一致。出于性能原因,深度學習模型傾向于保留批數據大小的第一維(因為如果并行訓練多個示例,則可以更快地訓練模型)。很明顯,這里非常適合使用reshape()。例如,像BERT這樣的模型會期望其輸入矩陣的形狀為:[batch_size,sequence_length,embedding_size]。

這是一個數字合集,模型可以處理并執行各種有用的操作。我留空了許多行,可以用其他示例填充以供模型訓練(或預測)。

事實證明,在我們的例子中,那位詩人的話語比其他詩人的詩句更加名垂千古。盡管生而為奴,詩人安塔拉(Antarah)的英勇和語言能力使他獲得了自由和神話般的地位,他的詩是伊斯蘭教以前的阿拉伯半島《懸詩》的七首詩之一。

轉自:大數據文摘

原文鏈接:https://jalammar.github.io/visual-numpy/

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STD
    STD
    +關注

    關注

    0

    文章

    36

    瀏覽量

    14345
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84457
  • 數據集
    +關注

    關注

    4

    文章

    1205

    瀏覽量

    24644

原文標題:這是我見過最好的 NumPy 圖解教程!

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    各種電子稱主板接線圖

    內容包括市面上大部分電子秤主板接線,彩色圖解,生動詳細
    發表于 11-12 14:07 ?0次下載

    【書籍評測活動NO.50】親歷芯片產線,輕松圖解芯片制造,揭秘芯片工廠的秘密

    的暢銷芯片科普書,原作者菊地正典,日本知名芯片專家,擔任過曾經世界半導體巨頭NEC公司半導體部門總經理和總工程師。著有多本暢銷科普圖書。 本書秉承了日式科普書風格,通過大量原理圖片和實物圖片,以圖解形式
    發表于 11-04 15:38

    思嵐科技SLAMKit定位與建圖解決方案介紹

    2023年11月,面對客戶高效穩定的定位和建圖需求,思嵐科技以業界創新的產品形態提供了SLAMKit定位和建圖解決方案,以軟件授權的方式嵌入運行在機器人的主控器中,并為機器人提供環境建模與自主定位的能力。
    的頭像 發表于 09-13 11:20 ?461次閱讀
    思嵐科技SLAMKit定位與建<b class='flag-5'>圖解</b>決方案介紹

    是否可以使用esp8266創建熱點并使用此熱點設置新的wifi詳細信息?

    我想知道是否可以使用 esp8266 創建熱點并使用此熱點設置新的 wifi 詳細信息,在我的項目中,我需要使用移動應用程序進行無線通信和設置 wifi 詳細信息,請從這里幫助我。非常歡迎提出建議和想法
    發表于 07-19 09:50

    雙向可控硅工作原理圖解

    端子)、T2(第二陽極或第一端子)和G(控制極或閘極)。 相比于單向可控硅,雙向可控硅不再有陽極和陰極的區分,而是用T1和T2來表示其兩個主電極。 二、雙向可控硅的工作原理圖解 雙向可控硅的調光電路工作原理說明一接通電源,220V經過燈泡VR4 R19對C23充電,由
    的頭像 發表于 07-15 15:26 ?4037次閱讀
    雙向可控硅工作原理<b class='flag-5'>圖解</b>

    使用NumPy實現前饋神經網絡

    要使用NumPy實現一個前饋神經網絡(Feedforward Neural Network),我們需要從基礎開始構建,包括初始化網絡參數、定義激活函數及其導數、實現前向傳播、計算損失函數、以及實現
    的頭像 發表于 07-11 16:30 ?1583次閱讀

    pytorch如何訓練自己的數據

    本文將詳細介紹如何使用PyTorch框架來訓練自己的數據。我們將從數據準備、模型構建、訓練過程、評估和測試等方面進行講解。 環境搭建 首先,我們需要安裝PyTorch。可以通過訪問PyTorch官網
    的頭像 發表于 07-11 10:04 ?446次閱讀

    NNG宣布為Dacia汽車提供基于OpenStreetMap的地圖解決方案

    在智能出行日益成為主流的今天,汽車導航系統的精準度與實時性成為了消費者購車時的重要考量因素之一。近日,全球領先的地圖解決方案提供商NNG正式宣布與知名汽車制造商Dacia達成戰略合作,共同推出
    的頭像 發表于 07-04 15:09 ?538次閱讀

    幫忙畫一張詳細的電路圖,謝謝

    能幫忙畫一張詳細的電路圖嗎,謝謝了。因為涉及到外部鏈接,怕被誤會發廣告,所以詳細的需求放在附件里面了 *附件:幫忙謝謝.rar
    發表于 05-04 22:59

    音箱制作過程圖解

    電子發燒友網站提供《音箱制作過程圖解.doc》資料免費下載
    發表于 04-28 09:27 ?10次下載

    python 學習:在內網中 python庫-numpy 安裝方法,升級pip3版本的指令

    指令格式如下:先下載numpy庫到C盤具體位置 手動安裝指令如下: pip install c:\\\\users\\\\sesa738142
    發表于 04-22 17:18

    基于NumPy的機器學習算法實現

    David Bourgin 表示他一直在慢慢寫或收集不同模型與模塊的純 NumPy 實現,它們跑起來可能沒那么快,但是模型的具體過程一定足夠直觀。每當我們想了解模型 API 背后的實現,卻又不想看復雜的框架代碼,那么它可以作為快速的參考。
    發表于 01-17 12:36 ?186次閱讀
    基于<b class='flag-5'>NumPy</b>的機器學習算法實現

    斷路器控制回路接線圖解

    斷路器控制回路接線圖解
    的頭像 發表于 12-16 09:37 ?1935次閱讀
    斷路器控制回路接線<b class='flag-5'>圖解</b>

    【涂鴉T2-U開發板試用體驗】+T2 Development Board V1.0.0 python環境搭建

    使用pip安裝所需的庫和工具。例如,如果您需要安裝NumPy庫,可以運行以下命令: ```pip3 install numpy``` 6. 現在,您可以在T2 Development Board V1.0.0上使用Python進行開發了。
    發表于 12-15 17:55

    python第三方庫有哪些

    Python 作為一門功能強大的編程語言,擁有豐富的第三方庫,幾乎覆蓋了各個領域的應用。下面是一些常見且廣泛應用的 Python 第三方庫的總結,希望能為您提供幫助。 NumPy(Numerical
    的頭像 發表于 11-29 14:31 ?2096次閱讀