python科學計算_可視化圖解Python科學計算包NumPy

e2318aaff7a2070928c2796bd0d3c9e8.png

4e2b0b3290409ec9f6690f1cc5030ebf.png

NumPy包是python生態系統中數據分析、機器學習和科學計算的主力。 它極大地簡化了向量和矩陣的操作。Python的一些主要軟件包依賴于NumPy作為其基礎架構的基礎部分(例如scikit-learn、SciPy、pandas和tensorflow)。我們將介紹一些使用NumPy的主要方法,以及在我們為機器學習模型提供服務之前它如何表示不同類型的數據(表格、聲音和圖像)。

import numpy as np

一、數組操作

1.1創建數組

通過將python列表傳遞給NumPy對象,使用np.array()創建一個NumPy數組(即ndarray)。 Python創建了我們在右邊可以看到的數組:

e46e17f0f2410052b20e66f546c300f8.png

一般情況,我們希望直接使用NumPy作為初始化的數組數據。 NumPy為這些情況提供了諸如ones(),zeros()和random.random()類等方法。 我們只需要向這些方法傳遞要生成的元素數量的參數:

dac2cdb3ff88784317874a2c90b77b83.png

一旦我們創建了數組,我們就可以開始以有趣的方式操作它們。

1.2 數組算術

先來創建兩個NumPy數組來展示它們的用處。 我們稱之為data和ones:

6b87d36d10895063bd0776cdc7045204.png

這兩個數組的加法就像我們+1那么簡單(每一行相加)。

dfee48d9b2578959f6e4a21e7249c125.png

可以發現這樣的計算不必在循環中實現。 這是非常好的抽象處理,可以讓你在更高層次上思考問題,而不是陷入如何實現計算的算法里面。

我們還可以像下面一樣進行其他運算:

5f0c77d72626302be3d95d9da09dadc0.png

通常情況下,我們希望在數組和單個數字之間執行操作(我們也可以將其稱為向量和標量之間的操作)。 比如說,我們的數組表示以英里為單位的距離,我們希望將其轉換為公里數。 我們只需要讓數據* 1.6就可以了。

3b2d776eb44f8d9d71b0c4488d619ca7.png

NumPy讓每個單元格都會發生相乘叫做廣播。

1.3索引數組

我們可以索引、切片NumPy數組。

ad20daf9a1e0a7b9615a7740ad818321.png

1.4 數組聚合

NumPy為我們提供非常好用的聚合功能:

3c251b12dd9d377861e2590a4b0e21bf.png

除了最小值、最大值和總和之外,還得到非常棒的東西,比如平均值、所有元素相乘的結果、標準差,以及其他很多。

二、多維處理

2.1 創建矩陣

所有的例子都在一個維度上處理向量。 NumPy的厲害之處是能夠將我們目前所看到的所有內容應用到任意維度上。我們可以傳遞一個Python列表,讓NumPy創建一個矩陣來表示它們:

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

bbf59f1fc32f4d2e346bf5e1a3b343cf.png

我們也可以使用上面提到的相同方法(ones(),zeros()和random.random()),只要我們給它們一個元組來描述我們正在創建的矩陣的維度:

6d7753982892464242145fb17594cff0.png

2.2 矩陣算術

如果兩個矩陣的大小相同,我們可以使用算術運算符(+ – * /)來進行矩陣計算。NumPy將這些作為位置操作處理:

7008fa1160f80f5e4fd138ed4b6d073c.png

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

f6a0dd1033c4b5a0b7f97bef7990c16d.png

2.3 點積

NumPy為每個矩陣提供了一個dot()方法,我們可以用它來執行與其他矩陣的點積運算:

d6f60a822bae5a5ff34c77b1d15b648a.png

兩個矩陣在它們彼此面對的一側必須具有相同的尺寸(上圖底部紅色的數字)。

您可以將此操作可視化為如下所示:

7e7096c87ed7c1a34f45354004b7c16d.png

2.4 矩陣索引

當我們操作矩陣時,索引和切片操作變得更加有用:

bf89e05df5e27393c3667f8e61858d17.png

冒號表示從哪個位置到哪個位置,留空表示開頭或者結尾;逗號表示行和列。NumPy的索引是從0開始的,并且后面的方括號是不包含后面的值(即小于后面的值)。

2.5 矩陣聚合

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

284e2208177581ce85e5cb2d8876ca47.png

我們不僅可以聚合矩陣中的所有值,還可以使用axis參數在行或列之間進行聚合:

80d9566ff1183ad34dd30c99e97e80e9.png

2.6 轉置和重塑

處理矩陣時的一個共同需求是需要旋轉矩陣。 當我們需要采用兩個矩陣的點積并需要對齊它們共享的維度時,通常就是這種情況。 NumPy數組有一個方便的屬性叫做T來獲得矩陣的轉置:

7605db922d688f9f075b946d36f5e27f.png

在更高級的應用中,您可能會發現自己需要切換某個矩陣的維度。 在機器學習應用程序中通常就是這種情況,其中某個模型期望輸入的某個形狀與您的數據集不同。 在這些情況下,NumPy的reshape()法很有用。 您只需將矩陣所需的新尺寸傳遞給它即可。

f72b94c4fefcc3cfa6f0b852696406e6.png

2.7 更多維度

NumPy可以完成我們在任何維度定義數據。 其中心數據結構稱為ndarray(N維數組)。

7a03f10b6967fdf9b7cae5cd2add0b85.png

在很多方面,處理新維度只需在NumPy函數的參數中添加逗號:

79e6bccdb242ab4fce336f2321b64c60.png

三、公式計算

我們舉一個計算均方誤差的例子。實現適用于矩陣和向量的數學公式是考慮NumPy的關鍵用例。例如均方誤差MSE公式,它是監督機器學習、模型處理、回歸問題的核心公式:

在NumPy中實現這一點是輕而易舉的:

e656a212f6c6436ed2255e7bf2ded1fc.png

這樣做的好處是我們不需要關心predictions和labels是否包含一個或一百個值(只要它們的大小相同)。我們可以通過一個示例逐步執行該代碼行中的四個操作:

1c1d336ebd5e46008594e6e265e5805b.png

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

d32a26cae9719134d16a8efeddf3eadf.png

然后我們可以對矢量中的值進行平方:

0c2fae4684eba11a36259f4a58b614d2.png

然后求和:

a11d73a5f754252eb8bae67bd32699fe.png

結果就是均方誤差。

四、數據表示

4.1 表格和電子表格

構建模型所需的所有數據類型(電子表格、圖像和音頻等),很多都非常適合在n維數組中表示。

電子表格或值表是二維矩陣。 電子表格中的每個工作表都可以是自己的變量。 Python中最受歡迎的抽象是pandas數據幀DataFrame,它實際上使用NumPy并在其上構建。

5cdc8c7a960b1cd15f4d18f947b6d07a.png

4.2 音頻

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

以下是一段音頻文件:

32202902219a260e52a66951f2e2d161.png

4.3 圖像

圖像是高度×寬度的像素矩陣。如果圖像是黑白的(即灰度),則每個像素可以由單個數字表示(通常在0(黑色)和255(白色)之間)。

想要裁剪圖像的左上角10 x 10像素部分? 告訴NumPy讓你image[:10,:10]。

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

87439725d576661891381087dd85deb7.png

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

a7c1292a54220be529237bca0741d857.png

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

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

相關文章

php 導出excel 特殊字符,PHPEXCEL導出,存在特殊字符遇到的問題

[13] > Array([payment_success_at] >[user_name] > ?.琳琳?[remarks] >[product_name] > 香菇[sku_name] > 斤[product_property] > 斤[price_original] > 5.50[price_current] > 5.50[consignee] > ?.琳琳?)以上代碼中用戶名中存在特殊符號…

win10任務欄怎么還原到下面_詳解:新版 WIN 10 V2004 任務欄和開始菜單全透明

是不是很酷炫?繼續往下看,你也可以簡單做到導語本文將告訴你如何借助一個小工具,將最新版 WIN 10 開始菜單和任務欄設置成全透明,以獲得超酷的視覺體驗。安裝和設置都很簡單,關鍵是一定要找到適合 WIN 10 版本的 Start…

php是靜態語言,Thinkphp靜態緩存多語言切換

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓1.首先判斷用戶有無手動指定語言2.從session中獲得當前語言3.session里面沒有則從cookie里面去取4.若是cookie里沒有,則根據IP段判斷5.若不在指定ip范圍內,自動偵測瀏覽器語言首先我們在Common/Conf/tags.ph…

10.8.8.8檸檬wifi網頁登錄_基于企業郵箱進行wifi實名認證的方案

之前我們介紹過如何用釘釘認證和企業微信認證來實現企業內部的實名上網認證。此外郵箱認證也是企業進行wifi實名認證的一個有效手段。因為很多企業都給員工開通了企業郵箱,直接讓員工輸入郵箱賬號和密碼進行認證上網。配置、使用和維護都相對比較簡單。本文我將介紹…

用pycharm寫python老是提示錯誤_python pycharm錯誤集錦

url:http://www.cnblogs.com/hinimix/p/8016859.html1, this list creation could be rewritten as a list literal預先定義了一個listlist1 [1,2,3,4] #這么用好比list1 [1,2,3] #這么用不好list1.append(4)此時會出現該提示解決鏈接:https://stackoverflow.com/…

php tire樹,Immutable.js源碼之List 類型的詳細解析(附示例)

本篇文章給大家帶來的內容是關于Immutable.js源碼之List 類型的詳細解析(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。一、存儲圖解我以下面這段代碼為例子,畫出這個List的存儲結構:let myL…

nodejs missing script: dev_nodejs深入學習系列之v8基礎篇

V8這個概念大家都不陌生了,那么你動手編譯過V8源碼嗎?編譯后有嘗試去了解V8背后的一些概念嗎?如果沒有,那么也不用心慌,下文將跟大家一一解釋這些東西。在編譯V8之前我們先要了解一個東西-構建系統1、構建系統1.1、構建…

cmos存儲器中存放了_天津大學姚建銓院士,張雅婷副教授JMCC:具有寬光譜調控特性的阻變存儲器...

【引言】存儲器是計算機中數據存放的主要介質。隨著5G時代到來,帶動人工智能、物聯網、智慧城市等應用市場發展并向存儲器提出多樣化需求,加上傳統存儲器市場價格變化等因素,新型存儲器將在市場發揮越來越重要的作用。因此具有存儲密度更高&a…

matlab轉差頻率控制,轉差頻率控制的異步電機調速系統的研究

1 引言交流變頻調速的方法是異步電機最有發展前途的調速方法。隨著電力電子技術、計算機技術和自動控制技術的不斷發展,交流電機變頻調速已經逐步取代直流電機調速,并經歷了采用電壓頻率協調控制、轉差頻率控制、矢量控制以及直接轉矩控制的發展過程。其…

python中標識符的命名規則_Python——標識符的命名規則

01 Python語言的特點 python的語言特點有很多,我們這里只講一點,python是一門面向對象的語言,即一切皆對象(Linux中有一句是:一切皆文件),括號內的只是打個比方,不懂也沒事&#xff…

python內置對象是什么_Python內置對象類型之數字類型

Python中有6種內置對象類型整數、浮點數–Number字符串–String列表–List元組–Tuple字典–Dictionary集合–Set不可變類型:Number、String、Tuple可變類型:List、Dictionary、Set知識點:變量和對象的關系–引用變量的使用數字類型的常見使用…

oracle的exp和imp,oracle exp和imp

--1.exp和imp的輸入都是名字和值對:如:exp parameter_namevalue 或exp parameter_name(value1,value2,value3..)--2.exp和imp都支持helpy選項。命令格式為:exp/imp helpy--3.exp中的參數:參數名稱 默認值 含義 建議compress Y 不壓縮導出數據的內容 comp…

python案例實操_用案例實操學習Python ,培養編程邏輯思維

案例一: A、B、C、D、E 五人在某天夜里合伙去捕魚,到第二天凌晨時都疲憊不堪,于是各自找地方睡覺。 日上三桿 A 第一個醒來,他將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。 B 第二個醒來,…

oracle錯誤1327,Oracle中的PGA監控報警分析(r11筆記第97天)

最近接到一個數據庫報警,讓我頗有些意外,這是一個PGA相關的報警。聽起來感覺是應用端的資源調用出了問題。報警內容大體如下:報警內容: PGA Alarm on alltest------------------------------------報警級別: PROBLEM------------------------…

python控制臺清屏_Python Shell 怎樣清屏?

啟動Python有兩種方式,分別為“Windows命令行窗口”和“IDLE” “命令行窗口”下可以通過如下兩種方法: 1. import subprocess subprocess.call("clear") # linux/mac subprocess.call("cls", shellTrue) # windows 執行完次命令后&…

python卸載opencv包_Ubuntu16.04卸載opencv2.4.9并安裝opencv3.2.0+contrib

本文為作者原創,轉載請注明出處(http://www.cnblogs.com/mar-q/)by 負赑屃需要用到opencv中的surf和sift算法,機器上只有opencv3.2,沒有擴展包,于是就去GitHub和官網看了下,沒想到8月剛出了3.3,一個激動就想…

php函數內的循環,PHP 循環列出目錄內容的函數代碼

PHP 循環列出目錄內容的函數代碼復制代碼 代碼如下:function list_files($dir){if(is_dir($dir)){if($handle opendir($dir)){while(($file readdir($handle)) ! false){if($file ! "." && $file ! ".." && $file ! "Thumbs.db&quo…

python火柴人打架代碼_python火柴人

廣告關閉 騰訊云11.11云上盛惠 ,精選熱門產品助力上云,云服務器首年88元起,買的越多返的越多,最高返5000元! 代碼實現了一個火柴人,他開心時可以跳躍、可以舞蹈,不開心時可以躺地上... ?代碼有…

spring boot admin 2.2 獲取日志失敗_SB實戰20-Spring Boot的日志和報告

上篇我們學習了《SB實戰19-Spring Boot的外部配置》,本篇我們學習Spring Boot的日志和報告。4 日志和報告4.1 日志日志是對應用運行時進行調試和分析的重要工具。Spring Boot使用SLF4J作為日志的API,Logback、Log4j2、Java Util Logging都可以作為日志提…

oracle樹狀排序,Oracle樹狀結構查詢

oracle用表的形式組織數據,某些數據還呈現樹狀結構,提供了對這些數據的組織、查詢等功能。在掃描樹結構表時,要依次訪問樹中的每一個節點,并且每個節點只能訪問一次,其步驟如下:1:從根節點開始2…