python(6)numpy的使用詳細講解

在numpy中,最基本的數據結構是數組,因此我們首先需要了解如何創建一個數組。numpy提供了多種數組創建方法,包括從列表或元組創建、從文件中讀取數據、使用特定函數創建等。下面是一些常用的創建方法:

一、創建數組

1. 從列表或元組創建

使用numpy.array()函數可以從列表或元組創建一個數組,例如:

import numpy as np

a = np.array([1, 2, 3])

b = np.array((4, 5, 6))

print(a) # [1 2 3]

print(b) # [4 5 6]

2. 從文件中讀取數據

當我們需要從文件中讀取數據時,可以使用numpy.loadtxt()函數,例如:

import numpy as np

data = np.loadtxt('data.txt')

print(data)

其中data.txt是一個包含數據的文本文件,loadtxt()函數會自動將其讀取為一個numpy數組。

3. 使用特定函數創建

numpy提供了多種特定的函數來創建數組,例如:

import numpy as np

a = np.zeros((3, 4)) # 創建一個3行4列的全0數組

b = np.ones((2, 3)) # 創建一個2行3列的全1數組

c = np.random.rand(2, 4) # 創建一個2行4列的隨機數數組

print(a)

print(b)

print(c)

?

二、數組的算術運算

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

三、數組的切片操作

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

NumPy使用圖解教程「建議收藏」

四、聚合函數

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

NumPy使用圖解教程「建議收藏」

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

五、NumPy中的矩陣操作

創建矩陣

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

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

六、矩陣的算術運算

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

七、矩陣的切片和聚合

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

八、矩陣的轉置和重構

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

九、NumPy中的公式應用示例

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

現在我們對這些值求和:

NumPy使用圖解教程「建議收藏」

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

十、用NumPy表示日常數據

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

1、表和電子表格

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

NumPy使用圖解教程「建議收藏」

2、音頻和時間序列

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

以下是一段音頻文件:

NumPy使用圖解教程「建議收藏」

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

3、圖像

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

這是一個圖像文件的片段:

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

4、語言

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

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

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

NumPy使用圖解教程「建議收藏」

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38698.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MySQL備份】Percona XtraBackup基礎篇

目錄 1.關于Percona XtraBackup 2. Percona XtraBackup有哪些特點? 3.安裝Percona XtraBackup 3.1.環境信息 3.2.安裝步驟 4. xtrabackup內部流程圖 5.Percona XtraBackup基礎語法 5.1.全量備份 5.2.增量備份 5.2.1.基于全量備份的增量備份 5.2.2.基于前…

[leetcode]max-consecutive-ones 最大連續1的個數

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int maxCount 0, count 0;int n nums.size();for (int i 0; i < n; i) {if (nums[i] 1) {count;maxCount max(maxCount, count);} else…

安裝和微調大模型(基于LLaMA-Factory)

打開終端&#xff08;在Unix或macOS上&#xff09;或命令提示符/Anaconda Prompt&#xff08;在Windows上&#xff09;。 創建一個名為lora的虛擬環境并指定Python版本為3.9。 conda create --name lora python3.9激活新創建的虛擬環境。 conda activate lora克隆項目。 git …

詳解COB顯示屏的技術特點

COB&#xff08;Chip on Board&#xff09;顯示屏作為一種采用倒裝COB封裝技術的LED顯示屏&#xff0c;在顯示效果以及使用穩定性跟防護性方面&#xff0c;擁有更大優勢&#xff0c;今天跟隨COB顯示屏廠家中品瑞科技一起來看看&#xff0c;COB顯示屏的技術特點&#xff1a; 1、…

如何在OpenEuler 上快速部署一套Zabbix7.0監控系統

如何在OpenEuler 上快速部署一套Zabbix監控系統 一、環境信息 用途機器IP操作系統備注zabbix-server172.22.33.180openeuler 22.03 LTS SP37.0 LTS 版本&#xff0c;容器部署zabbix-agent172.16.10.182openeuler 22.03 LTS SP37.0 源碼編譯部署 二、Docker 部署 2.1 二進制…

【小白入門】關于視頻剪輯該自學還是報課?

★解密&#xff1a;【賦能計劃—剪輯小白入門】 ★ 在這個視頻流量為王的時代&#xff0c;人人都想打造屬于自己的IP&#xff0c;今年更是有許多企業家也紛紛下場干起來了&#xff0c;網上曾流行這樣的一句話&#xff1a;“現在人們的生活方式改變了&#xff0c;所有事情都值得…

Anti-Canine Heartworm Antibody (Chicken) - HRP Conjugated

犬心絲蟲&#xff08;學名Dirofilaria immitis&#xff09;是一種寄生絲蟲&#xff0c;通過蚊子叮咬而傳播。感染犬在早期階段&#xff0c;大多不會出現癥狀。隨著病情發展&#xff0c;將出現咳嗽、呼吸困難等癥狀&#xff0c;并伴有右心功能衰竭&#xff0c;最終全身衰弱或虛脫…

檢索增強生成RAG系列3--RAG優化之文檔處理

在上一章中羅列了對RAG準確度的幾個重要關鍵點&#xff0c;主要包括2方面&#xff0c;這一章就針對其中一方面&#xff0c;來做詳細的講解以及其解決方案。 目錄 1 文檔解析1.1 文檔解析工具1.2 實戰經驗1.3 代碼演示 2 文檔分塊2.1 分塊算法2.2 實戰經驗2.3 代碼演示 3 文檔e…

VLAN基礎

一、什么是Vlan VLAN&#xff08;Virtual Local Area Network&#xff09;是虛擬局域網的簡稱&#xff0c;是一種將單一物理局域網&#xff08;LAN&#xff09;在邏輯層面上劃分為多個獨立的廣播域的技術。每個VLAN都是一個獨立的廣播域&#xff0c;其內部主機可以直接通信&am…

python自動化辦公之shutil

目錄 1復制文件&#xff0c;此時存在2份相同文件 2移動文件&#xff0c;此時僅有1份文件 3刪除文件&#xff0c;此時0份文件 用到的庫&#xff1a;shutil&#xff0c;os 實現的效果&#xff1a;復制文件&#xff0c;移動文件&#xff0c;刪除文件 代碼&#xff1a; 1復制…

并發請求數量限制

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>并發請求數量限制</title> </head> <…

使用Colly庫進行高效的網絡爬蟲開發

引言 隨著互聯網技術的飛速發展&#xff0c;網絡數據已成為信息獲取的重要來源。網絡爬蟲作為自動獲取網頁內容的工具&#xff0c;在數據分析、市場研究、信息聚合等領域發揮著重要作用。本文將介紹如何使用Go語言中的Colly庫來開發高效的網絡爬蟲。 什么是Colly庫&#xff1…

力扣974.和可被K整除的子數組

力扣974.和可被K整除的子數組 將余數相同的做差 若為負數要翻正再存入哈希表若為正數要存入哈希表統一操作 (sj % k k ) % k class Solution {public:int subarraysDivByK(vector<int>& nums, int k) {int n nums.size();vector<long> s(n1);for(int i0;i…

超聲波清洗機怎么選?極力推薦四款口碑大牌超聲波清洗機

相信大家都知道超聲波清洗機&#xff0c;每次眼鏡臟的時候&#xff0c;去眼鏡店里讓老板幫忙清洗&#xff0c;她們用的就是超聲波清洗機&#xff0c;通過超聲波的原理深入物品深處清潔&#xff0c;清潔效果非常好。相對手洗的方式&#xff0c;超聲波清洗機能夠保護鏡片在清洗過…

[240701] 蘋果設備持久耐用,人工智能戰略成未來致勝關鍵

目錄 蘋果設備持久耐用&#xff0c;人工智能戰略成未來致勝關鍵 蘋果設備持久耐用&#xff0c;人工智能戰略成未來致勝關鍵 蘋果公司產品策略的轉變及其對未來發展的影響。 現狀&#xff1a; 蘋果硬件創新速度放緩&#xff0c;產品外觀和設計迭代周期變長&#xff0c;導致消…

【開放詞匯分割】Side Adapter Network for Open-Vocabulary Semantic Segmentation

論文鏈接&#xff1a;Side Adapter Network for Open-Vocabulary Semantic Segmentation 代碼鏈接&#xff1a;https://github.com/MendelXu/SAN 作者&#xff1a;Mengde Xu,Zheng Zhang,Fangyun Wei,Han Hu,Xiang Bai 發表單位&#xff1a;華中科技大學、微軟亞洲研究院 會…

Vue 快速入門案例

步驟一&#xff1a;引入vue.js文件 添加<script>標簽并標明路徑 步驟二&#xff1a;定義Vue對象 el Vue接管區域 data 定義數據模型 步驟三&#xff1a;編寫視圖層的展示 v-model 綁定數據模型 {{要展示的數據模型}} 運行效果 總結 文本框里的值&a…

雪花算法的原理以及實現

文章目錄 一、簡介二、算法優缺點三、算法實現 一、簡介 有這么一種說法&#xff0c;自然界中并不存在兩片完全一樣的雪花的。每一片雪花都擁有自己漂亮獨特的形狀、獨一無二。雪花算法也表示生成的ID如雪花般獨一無二。 雪花算法 &#xff08;SnowFlake &#xff09;算法&am…

幾度互聯網站群管理系統全媒體解決方案

隨著高考的結束&#xff0c;各高校開啟了緊張的招生宣傳工作&#xff0c;幾度互聯網站群系統助力各高校招生宣傳。 學校官方網站是互聯網時代學校對外交流的重要途徑和信息公開的主要載體&#xff0c;是展示學校形象、密切聯系師生的重要窗口&#xff0c;是加強校園宣傳思想工…

【MySQL備份】Percona XtraBackup篇

目錄 1.關于Percona XtraBackup 2. Percona XtraBackup有哪些特點&#xff1f; 3.安裝Percona XtraBackup 3.1.環境信息 3.2.安裝步驟 4.實戰演練 4.1.全量備份與恢復 4.2.總結 1.關于Percona XtraBackup Percona XtraBackup是世界上唯一的開源、免費的MySQL熱備份 為…