




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Python數(shù)據(jù)分析基礎(chǔ)教程第1章數(shù)據(jù)分析概述第2章Python與數(shù)據(jù)分析第3章Python語法基礎(chǔ)第4章NumPy數(shù)組與矢量計算第5章用NumPy進行簡單統(tǒng)計第6章數(shù)據(jù)可視化——Matplotlib庫第7章pandas數(shù)據(jù)分析基礎(chǔ)第8章用pandas進行數(shù)據(jù)預(yù)處理第9章機器學(xué)習(xí)庫scikit-learn入門第10章電影數(shù)據(jù)分析項目第1章數(shù)據(jù)分析概述學(xué)習(xí)目標:
了解數(shù)據(jù)、數(shù)據(jù)類型的基本概念。
了解數(shù)據(jù)分析的基本概念。
了解數(shù)據(jù)分析的過程。
了解數(shù)據(jù)分析的作用。
了解數(shù)據(jù)分析的常用工具。
所謂數(shù)據(jù)就是描述事物的符號,是對客觀事物的性質(zhì)、狀態(tài)以及相互關(guān)系等進行記載的物理符號或者是這些物理符號的組合。在計算機系統(tǒng)中,各種文字、字母、數(shù)字符號的組合、圖形、圖像、視頻、音頻等統(tǒng)稱為數(shù)據(jù),數(shù)據(jù)經(jīng)過加工后就成為信息。在現(xiàn)實生活中,數(shù)據(jù)無所不在,如天氣預(yù)報、居民身份證號碼、快遞單和火車時刻表中就包含了大量的數(shù)據(jù)。人們就是通過數(shù)據(jù)來認識世界,交流信息。1.1.1數(shù)據(jù)的概念
數(shù)據(jù)與信息是既有聯(lián)系,又有區(qū)別。數(shù)據(jù)是信息的表現(xiàn)形式和載體,而信息則是數(shù)據(jù)的內(nèi)涵,信息是加載于數(shù)據(jù)之上,對數(shù)據(jù)作具體含義的解釋。數(shù)據(jù)是符號,是物理性的,信息是對數(shù)據(jù)進行加工處理之后所得到的并對決策產(chǎn)生影響的數(shù)據(jù),信息是數(shù)據(jù)有意義的表示。
當信息轉(zhuǎn)化為一組有助于更好地理解特定機制的規(guī)則時,信息就已經(jīng)轉(zhuǎn)化為知識,人們就可以利用這些知識來預(yù)測事件的演變。1.1.1數(shù)據(jù)的概念
1.1.2數(shù)據(jù)類型
數(shù)據(jù)可以分為兩個不同的類別:
①類別型:定類和定序。
②數(shù)值型:離散和連續(xù)。
類別型數(shù)據(jù)是指可以被分成不同組或類別的值或觀察結(jié)果。有兩種類別型數(shù)據(jù):定類(nominal)和定序(ordinal)。
數(shù)值型數(shù)據(jù)通過測量得到的數(shù)值或觀察結(jié)果。有兩種數(shù)值型數(shù)據(jù):離散型和連續(xù)型。1.2.1數(shù)據(jù)分析的概念
數(shù)據(jù)分析是指用適當?shù)慕y(tǒng)計分析方法對收集來的大量原始數(shù)據(jù)進行分析,為提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細研究和概括總結(jié)的過程。數(shù)據(jù)分析的目的是抽取不易推斷的信息,而一旦理解了這些信息,就能夠?qū)Ξa(chǎn)生數(shù)據(jù)的系統(tǒng)的運行機制進行研究,從而對系統(tǒng)可能的響應(yīng)和演變作出預(yù)測。
數(shù)據(jù)分析最初用作數(shù)據(jù)保護,現(xiàn)已發(fā)展成為數(shù)據(jù)建模的方法論。模型實際上是指將所研究的系統(tǒng)轉(zhuǎn)化成數(shù)學(xué)形式,一旦建立了數(shù)學(xué)或邏輯模型,對系統(tǒng)的響應(yīng)能做出不同精度的預(yù)測。1.2.2數(shù)據(jù)分析的過程數(shù)據(jù)分析可以概括為下面幾個階段:1.
問題定義2.
數(shù)據(jù)采集3.
數(shù)據(jù)預(yù)處理4.
數(shù)據(jù)探索5.
數(shù)據(jù)可視化6.
預(yù)測模型7.評估模型8.部署解決方案1.2.2數(shù)據(jù)分析的過程問題定義
在數(shù)據(jù)分析前,首先需要明確數(shù)據(jù)分析目標,既本次數(shù)據(jù)分析要研究的主要問題和預(yù)期的分析目標等,這稱為問題定義。2.數(shù)據(jù)采集
問題定義步驟完成后,在分析數(shù)據(jù)之前,首先要做的就是獲取數(shù)據(jù)。數(shù)據(jù)的獲取方式有以下幾種:
①利用SQL語句直接從企業(yè)管理數(shù)據(jù)庫中調(diào)取相關(guān)業(yè)務(wù)數(shù)據(jù)。
②到特定的網(wǎng)站上去下載一些科研機構(gòu)、企業(yè)、政府開放的公開數(shù)據(jù)集。③編寫網(wǎng)頁爬蟲,去收集互聯(lián)網(wǎng)上的數(shù)據(jù)。1.2.2數(shù)據(jù)分析的過程3.
數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理就是將數(shù)據(jù)采集所獲得的原始數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換后,將原始數(shù)據(jù)轉(zhuǎn)變?yōu)椤案蓛簟钡臄?shù)據(jù)。4.
數(shù)據(jù)探索
探索數(shù)據(jù)的本質(zhì)是從圖形或統(tǒng)計數(shù)字中搜尋數(shù)據(jù),以發(fā)現(xiàn)數(shù)據(jù)中的模式、聯(lián)系和關(guān)系。5.
數(shù)據(jù)可視化
數(shù)據(jù)可視化是獲得信息的最佳方式之一。通過視覺化呈現(xiàn)數(shù)據(jù)的方式,不僅能快速抓住要點信息,而且,還可以揭示通過簡單統(tǒng)計不能觀察到的模式和結(jié)論。1.2.2數(shù)據(jù)分析的過程6.
預(yù)測模型
預(yù)測模型是指用于預(yù)測的,用數(shù)學(xué)語言或公式所描述的事物間的數(shù)量關(guān)系。
模型主要有兩個方面的用途。
①使用回歸模型來預(yù)測系統(tǒng)所產(chǎn)生數(shù)據(jù)的值。
②使用分類模型或聚類模型為新數(shù)據(jù)分類。
根據(jù)輸出結(jié)果的類型,模型可分為以下三種。
①分類模型:模型輸出結(jié)果為類別型。
②回歸模型:模型輸出結(jié)果為數(shù)值型。
③聚類模型:模型輸出結(jié)果為描述型。1.2.2數(shù)據(jù)分析的過程7.
評估模型
模型評估階段也就是測試階段,該階段是從整個數(shù)據(jù)分析的初始數(shù)據(jù)集中抽取出一部分用作驗證集,并用驗證集去評估使用先前采集的數(shù)據(jù)所創(chuàng)建的模型是否有效。一般來說,用于建模的數(shù)據(jù)稱為訓(xùn)練集,用于驗證模型的數(shù)據(jù)稱為驗證集。8.
部署解決方案
數(shù)據(jù)分析的最后一步是部署,旨在展示結(jié)果,也就是給出數(shù)據(jù)分析的結(jié)論,通常這個階段也稱為數(shù)據(jù)報告的撰寫。數(shù)據(jù)報告的撰寫應(yīng)詳細描述分析結(jié)果、決策部署、風(fēng)險分析和商業(yè)影響評估。1.2.3數(shù)據(jù)分析的作用
數(shù)據(jù)分析具有三大作用:
第一:現(xiàn)狀分析。所謂現(xiàn)狀有兩層含義,一層含義是指已經(jīng)發(fā)生的事情,另一層含義是指現(xiàn)在所發(fā)生的事情。通過對企業(yè)的基礎(chǔ)周報或月報分析,可了解企業(yè)的整體運營情況,發(fā)現(xiàn)企業(yè)經(jīng)營中的問題,明確企業(yè)的現(xiàn)狀。
第二:原因分析。如果通過現(xiàn)狀分析,了解了企業(yè)存在著某種隱患,則需要去分析該隱患。了解該隱患為什么會存在?是如何產(chǎn)生的?
第三:預(yù)測分析。在分析了現(xiàn)狀,也分析了原因后,就需要進行預(yù)測分析。通過現(xiàn)在所掌握的數(shù)據(jù),來預(yù)測未來發(fā)展的趨勢等。
1.2.4數(shù)據(jù)分析的常用工具
目前主流的數(shù)據(jù)分析語言有Python、R、MATLAB這3種。表1-1從語言學(xué)習(xí)難易程度、使用場景、第三方支持、流行領(lǐng)域和軟件成本5方面比較了Python、R、MATLAB這3種數(shù)據(jù)分析工具。
本章小結(jié)
本章介紹了數(shù)據(jù)和數(shù)據(jù)分析的基本概念,重點介紹數(shù)據(jù)分析的過程,包括問題定義、數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)探索與數(shù)據(jù)可視化、預(yù)測模型、評估模型和部署等,以及數(shù)據(jù)分析的作用和數(shù)據(jù)分析的常用工具。謝謝!第2章Python與數(shù)據(jù)分析學(xué)習(xí)目標:
了解Python語言的特點。
了解Python與數(shù)據(jù)分析的關(guān)系。
了解Python數(shù)據(jù)分析常用的類庫。
掌握Python的環(huán)境搭建。
掌握PyCharm安裝與使用。
掌握JupyterNotebook安裝與使用。Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,Python語言特點如下:
①Python是一種解釋型編程語言。
②Python是一種交互式編程語言。
③Python是一種面向?qū)ο缶幊陶Z言。
④Python具有很高的可移植性。
⑤Python具有可擴展性。
⑥Python具有可嵌入性。
⑦Python提供了許多商業(yè)數(shù)據(jù)庫的接口,同時,還支持GUI編程。
⑧Python是一門開源的編程語言。
2.1.1Python語言的特點Python是一種解釋型編程語言,每次運行Python命令時,Python的解釋器就會啟動,此時就會出現(xiàn)Python命令提示符>>>。Python的解釋器可分為CPython、IPython、Jython、PyPy和IronPython幾種。2.1.2Python解釋器2.2Python與數(shù)據(jù)分析關(guān)系
常用的數(shù)據(jù)分析工具有Python語言、R語言、MATLAB等,但在大數(shù)據(jù)分析領(lǐng)域,Python是最受歡迎的主流程序語言。究其原因主要有:
第一,Python是一種解釋型編程語言。
第二,Python語言擁有和數(shù)據(jù)分析相關(guān)的大量開源庫和分析框架,可直接使用,非常方便。
第三,Python其實不是只能專用于數(shù)據(jù)分析,它還有很多其他方面的用途。如Python是一門通用型的編程語言,它也可以作為腳本來使用,還能操作數(shù)據(jù)庫;而且由于Django等框架的問世,Python近年來還用于開發(fā)Web應(yīng)用。2.3Python數(shù)據(jù)分析常用的類庫Python數(shù)據(jù)分析中常用的庫有NumPy、pandas、Matplotlib和SciPy等,這些庫在數(shù)據(jù)分析中起著很重要的作用。
①NumPy(NumericalPython的簡稱)是Python科學(xué)計算的基礎(chǔ)包。
②pandas是Python數(shù)據(jù)分析的核心庫,它是基于NumPy構(gòu)建的含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)和工具的數(shù)據(jù)分析包。
③Matplotlib是最流行的用于繪制數(shù)據(jù)圖表的Python庫,它非常適合創(chuàng)建出版物中用的圖表。Matplotlib提供了一整套和MATLAB相似的命令A(yù)PI,十分適合交互式地進行制圖。2.3Python數(shù)據(jù)分析常用的類庫④SciPy是一組專門用于科學(xué)計算的開源Python庫,它是構(gòu)建于NumPy之上,提供了一個用于在Python中進行科學(xué)計算的工具集。SciPy經(jīng)常與NumPy、pandas、Matplotlib和IPython這些核心庫一起使用。
⑤scikit-learn是一個簡單有效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具,scikit-learn是建立在NumPy、SciPy和Matplotlib的基礎(chǔ)之上,對一些常用的算法方法進行了封裝。Scikit-learn的基本功能主要被分為六大部分:分類,回歸,聚類,數(shù)據(jù)降維,模型選擇和數(shù)據(jù)預(yù)處理。
⑥IPython是Python科學(xué)計算標準工具集組成部分,它為交互式和探索式計算提供了一個高效率的開發(fā)環(huán)境。2.4Python的開發(fā)環(huán)境搭建Python3.6.3軟件安裝環(huán)境變量配置3.測試Python
按【win】+【r】鍵,進入cmd,輸入python,按回車鍵,進入Python的交互式終端,如圖2-7所示。在Python命令提示符>>>后可輸入Python命令代碼,按回車鍵后直接運行。2.5.1PyCharm安裝與使用1.PyCharm簡介PyCharm是由JetBrains公司開發(fā)的一款Python的集成開發(fā)環(huán)境軟件。2.PyCharm安裝
①在jetbrains官網(wǎng)(/pycharm/download/#section=windows)上下載社區(qū)版本的PyCharm軟件,軟件名稱為pycharm-community-2017.3.exe。
②
雙擊pycharm-community-2017.3.exe,打開PyCharm軟件安裝界面,參考教材安裝說明進行安裝和啟動PyCharm。2.5.1PyCharm安裝與使用3.PyCharm簡單設(shè)置,如更換主題、修改源代碼字體大小、編碼設(shè)置等。【操作演示】4PyCharm使用①新建項目
操作步驟:打開PyCharm,單擊“File->NewProject”,操作演示。
②
創(chuàng)建Python文件
操作步驟:右擊項目名稱,選擇“New->PythonFile”,操作演示。
③編寫和運行Python程序。
【操作演示】2.5.2JupyterNotebook安裝與使用1.JupyterNotebook簡介JupyterNotebook(又稱IPythonNotebook)是一個交互式的在線編輯器,它可以每編輯一行代碼就運行一行代碼,并且將運行的結(jié)果顯示在代碼的下方,以方便用戶查看。2.JupyterNotebook安裝
安裝步驟如下:
①按【win】+【r】鍵,進入cmd狀態(tài)。
②在cmd狀態(tài)的打開欄中輸入pipinstalljupyter命令,按回車鍵,進入jupyter模塊安裝。2.5.2JupyterNotebook安裝與使用③啟動JupyterNotebook。
安裝完成后,進入cmd狀態(tài),在cmd狀態(tài)的打開欄中輸入JupyterNotebook命令,按回車鍵,即可啟動JupyterNotebook。3.新建一個Notebook【操作演示】2.5.2JupyterNotebook安裝與使用4.JupyterNotebook使用
①JupyterNotebook界面構(gòu)成JupyterNotebook界面是由Notebook的名稱,菜單欄、工具欄和Notebook的內(nèi)容編輯區(qū)組成。
②菜單欄組成
菜單欄中有File、Edit、View、Insert、Cell、Kernel、Help等功能。
③具欄組成
工具欄從左到右的按鈕依次為:保存、新建、剪切、復(fù)制、粘貼、上移cell、下移cell、運行代碼、終止運行、重啟內(nèi)核、改變cell類型和命令面板等。2.5.2JupyterNotebook安裝與使用④單元模式
在Notebook中的單元有兩種模式:命令模式(CommandMode)與編輯模式(EditMode)。
⑤標題單元(Headingcell)使用⑥代碼單元(codecell)使用⑦Markdown單元使用
⑧單元操作⑨
其他操作JupyterNotebook其他操作如表2-9所示。5.JupyterNotebook高級功能項目實踐1、在Windows系統(tǒng)下搭建Python的開發(fā)環(huán)境。2、在Windows系統(tǒng)下安裝使用PyCharm,創(chuàng)建輸出“helloworld!”的程序。3、在Windows系統(tǒng)下安裝使用JupyterNotebook,創(chuàng)建輸出“helloworld!”的程序。本章小結(jié)
本章介紹了Python語言的特點,Python語言在數(shù)據(jù)分析中優(yōu)勢,以及Python數(shù)據(jù)分析常用的類庫。重點是要掌握Python的環(huán)境搭建,Python集成開發(fā)環(huán)境PyCharm安裝與使用和JupyterNotebook安裝與使用。謝謝!第3章Python語言基礎(chǔ)學(xué)習(xí)目標:
掌握Python的基礎(chǔ)語法。
掌握Python的數(shù)據(jù)類型。
掌握Python流程控制語句的使用方法。
掌握Python函數(shù)的使用方法。
掌握數(shù)據(jù)結(jié)構(gòu)、流程控制語句和函數(shù)的綜合運用。1.Python編碼設(shè)置Python3安裝后,系統(tǒng)默認其源碼文件為UTF-8編碼,但是如果編輯器不支持UTF-8編碼文件,或者要使用其編碼方式,就要為源文件指定特定的字符編碼。此時,需要在文件首行或者第二行插入一行特殊的注釋行作為字符編碼聲明,其格式如下。#-*-coding:UTF-8-*-
或者:
#coding:UTF-8和#coding=UTF-83.1.1Python的語法規(guī)則2.代碼注釋
在程序設(shè)計中,常常要對程序代碼添加注釋,Python的代碼注釋有下:①單行注釋
單行注釋通常是以#號開頭,在#號后面緊接的是注釋說明的文字。
注意:注釋行是不會被機器解釋的。編碼聲明也是以#號開頭,但它不是代碼注釋行,而且編碼聲明要放在首行或第二行才能被機器解釋。
3.1.1Python的語法規(guī)則
#這是輸出語句(單行注釋)
print("你好!歡迎到Python社區(qū)來!");#這是輸出語句(單行注釋)示例②多行注釋
在實際的程序文檔中常常需要進行多行注釋,多行注釋有以下兩種方法。
在每一行前加#號即可。
使用3個單引號或3個雙引號將注釋的內(nèi)容括起來。3.1.1Python的語法規(guī)則
'''
這是使用3個單引號的多行注釋
這是使用3個單引號的多行注釋
'''
print("你好!歡迎到Python社區(qū)來!");示例3.Python標識符(1)Python標識符是由英文字母、數(shù)字及下劃線(_)組成。(2)Python中的標識符不能以數(shù)字開頭。(3)Python標識符是區(qū)分大小寫的。(4)以下劃線開頭的標識符是有特殊意義的,參見教材說明。4.Python關(guān)鍵字Python中的關(guān)鍵字見教材表3-1。
5.縮進代碼Python最具特色的就是用縮進方式來標識代碼塊。在同一個代碼塊的語句必須保證相同的縮進空格數(shù),否則,程序會報錯。3.1.1Python的語法規(guī)則6.多行語句
在Python編程中,如果一條語句太長,可以使用反斜杠(\)將一行的語句換行分為多行,而不會被機器識別為多條語句。
但是在Python中,如果[],{}或()括號里面有多行語句,在換行時不需要使用反斜杠(\),而是使用逗號換行即可。
如果一行包含多條語句,則使用分號(;)對多條語句分隔。
3.1.1Python的語法規(guī)則7.Python空行
在Python中,一般在函數(shù)之間或類的方法之間用空行分隔,以表示一段新的代碼的開始。類和函數(shù)入口之間也可以用一行空行分隔,以突出函數(shù)入口的開始。
空行的作用是用于分隔兩段不同功能或含義的代碼,以便于代碼的閱讀、維護或重構(gòu)。8.
用戶輸入函數(shù)
在Python中用戶輸入信息的語句是input()函數(shù)。9.代碼組
縮進相同的一組語句構(gòu)成一個代碼塊,也稱之代碼組。3.1.1Python的語法規(guī)則10.print()輸出函數(shù)print()函數(shù)默認輸出是換行的,如果要實現(xiàn)不換行輸出就需要在變量末尾加上end=“”,參見教材示例。11.import與from...import語句
在Python中可以使用import或者from...import語句來導(dǎo)入相應(yīng)的模塊。import與from...import的作用如表3-2。3.1.1Python的語法規(guī)則1.
常量Python中的常量,就如同數(shù)字3,2.34,1.3e-2和字符串“thisisastring”一樣,常量的值是不能改變的。2.變量(1)變量的特性Python中的變量是指存儲在計算機內(nèi)存中的值。通過id()函數(shù)可以查看創(chuàng)建變量和變量重新賦值時內(nèi)存空間的變化過程。
在Python中,變量是不需要提前聲明,創(chuàng)建時直接對其賦值即可,變量的數(shù)據(jù)類型是由賦值給變量的值決定。創(chuàng)建一個變量,首先要定義變量名和變量值,然后再通過賦值語句將變量值賦值給變量名。3.1.2常量、變量與標準數(shù)據(jù)類型2.變量(2)變量的命名規(guī)則(3)變量值就是賦值給變量的數(shù)據(jù)。(4)變量賦值
通過單變量賦值創(chuàng)建變量和輸出變量,除了單變量賦值外,Python還允許為多個變量賦值相同的值,其格式:a=b=c=1
另外,Python還可以為多個對象指定多個變量,
其格式:a,b,c=1,2,"john”3.1.2常量、變量與標準數(shù)據(jù)類型3.標準數(shù)據(jù)類型Python定義了一些標準的數(shù)據(jù)類型,以用于存儲各種類型的數(shù)據(jù)。其中,Python的六個標準的數(shù)據(jù)類型分別為numbers(數(shù)字)、string(字符串)、list(列表)、tuple(元組)、dictionary(字典)和集合(set)等。3.1.2常量、變量與標準數(shù)據(jù)類型
利用PyCharm開發(fā)工具編寫第一個Python的腳本程序的方法。
【例3-1】設(shè)計一個Python的腳本程序,該程序的功能是:當用戶輸入的成績大于85分,則輸出“優(yōu)秀學(xué)生”,否則輸出“合格學(xué)生”,并設(shè)置程序編碼方式為UTF-8。3.1.3第一個Python程序1.Python3的數(shù)值型數(shù)據(jù)類型Python中的數(shù)字是用于存儲數(shù)值的,Python3支持的數(shù)值型數(shù)據(jù)類型有int(整數(shù))、float(浮點數(shù))、bool(布爾型)和complex(復(fù)數(shù))。而數(shù)值型數(shù)據(jù)類型的表示方法見表3-3。
表3-3數(shù)值型數(shù)據(jù)類型
3.2.1數(shù)字2、數(shù)字創(chuàng)建與刪除
當給變量賦值一個數(shù)字時,數(shù)字(Number)對象就會被創(chuàng)建。如果要刪除這些對象引用可使用del語句。del語句的語法:delvar1[,var2[,var3[….,varN]]]3、數(shù)字類型轉(zhuǎn)換
在Python中,如果需要對數(shù)據(jù)內(nèi)置的類型進行轉(zhuǎn)換,只需要將數(shù)據(jù)類型作為函數(shù)名即可。
如在Python交互式終端的命令提示符后輸入var=10.2;int(var),則會輸出10整數(shù)。3.2.1數(shù)字4、數(shù)字運算
數(shù)字運算有+(加)、-(減)、*(乘)、/(除)或//(除)、%(取余)、**(乘方)。如6+7、6-4、3*2、6/4(6除4,返回是浮點數(shù))、6//4(6除4,返回是整數(shù))、6%4(6除4取余)、6**2(6的2次方)。
【例3-2】說明Python中數(shù)字的運用。具體示例參見教材。
3.2.1數(shù)字3.2.2字符串Python中的字符串是一個有序的字符集合,是用于存儲表示文本的信息。1.字符串定義
在Python中,可以使用單引號(‘),雙引號(“)或三引號(’‘’”“”)來標識字符串,引號的開始與結(jié)束必須是相同類型的。具體示例參見教材。2.Python轉(zhuǎn)義字符
在Python的字符串中如需要使用特殊字符時,可使用反斜杠(\)轉(zhuǎn)義字符來定義,如換行符用”\n”表示。Python中常用的轉(zhuǎn)義字符見表3-4。3.2.2字符串3.字符串索引
字符串的索引分為正索引和負索引,通常說的索引就是指正索引。在Python中,正索引是從左到右去標記字母,索引是從0開始,也就是說從左邊開始第一個字母索引是0,第二個字母索引是1,依此類推。負索引是從右到左去標記字母,然后加上一個負號(-),負索引的第一個值是-1,也就是說從右邊開始第一個字母索引是-1,第二個字母索引是-2,依此類推。3.2.2字符串4.字符串的操作(1)
字符串提取
字符串的提取就是通過索引獲取字符串中指定位置的字符。字符串提取的方法是在變量名后使用方括號([])將需要提取的字符索引放置在方括號中即可。
例如變量var=‘Hello’,如果要提取出字符串中字母“H”和“e”,可用var[0]輸出“H”字母,用var[1]輸出“e”字母。3.2.2字符串字符串的操作(2)字符串切片
字符串切片方法是變量名后使用方括號([i:j]),其中i表示截取字符串的開始索引,j表示結(jié)束索引。注意:在截取字符串時將包含起始字符,但不包含結(jié)束字符,這是一個半開閉區(qū)間。同時,Python還提供了一個len()內(nèi)置函數(shù)用于返回字符串(或其他有長度對象)的長度。
例如變量var=‘Hello’,如果要截取出子字符串“ell”,則使用var[1:4]即可。而使用var[2:5]則輸出“l(fā)lo”子字符串。注意:在Python中,字符串是不可以更改的。3.2.2字符串字符串的操作(3)
字符串拼接
字符串拼接也就是將字符串連接,字符串連接的方法就是使用加號(+)將字符串變量連接起來。如果需要重復(fù)輸出字符串,可使用星號(*),重復(fù)輸出字符串格式:重復(fù)次數(shù)*字符串或者字符串*重復(fù)次數(shù)。另外,相鄰的兩個字符串本文會自動拼接在一起。(4)判斷字符串是否包含指定字符串
判斷字符串是否包含指定字符串的方法:使用(in)操作符。(5)判斷字符串中不包含指定字符串
判斷字符串中不包含指定字符串的方法:使用(notin)操作符。3.2.2字符串字符串的操作(6)字符串格式化Python格式化字符串方法,就是在格式化操作符(%)的左側(cè)放一個格式化字符串(包含%的字符串),在右側(cè)放一個或多個對象,這些對象是想在左側(cè)插入的轉(zhuǎn)換目標。Python字符串格式化符號見表3-5。
【例3-3】說明Python中字符串的運用。參見教材。3.2.3Python數(shù)據(jù)結(jié)構(gòu)組成1.數(shù)據(jù)結(jié)構(gòu)類型
除了數(shù)字和字符串外,Python還有4個內(nèi)建的數(shù)據(jù)結(jié)構(gòu),也稱為容器(container),其中主要包含序列(如列表和元組)、映射(如字典)以及集合3種基本的數(shù)據(jù)結(jié)構(gòu)類型。(1)序列類型
序列是數(shù)據(jù)結(jié)構(gòu)對象的有序排列,Python中有6種內(nèi)建的序列,包括字符串(string)、列表(list)、元組(tuple)、Unicode字符串、buffer對象和xrange對象,其中列表和元組是最常見的類型。3.2.3Python數(shù)據(jù)結(jié)構(gòu)組成數(shù)據(jù)結(jié)構(gòu)類型(2)映射類型
映射類型就是存儲了對象與對象之間的映射關(guān)系的數(shù)據(jù)結(jié)構(gòu)類型,Python中唯一的映射類型的數(shù)據(jù)類型是字典。字典中的每個元素都存在相應(yīng)的名稱(稱為鍵)與之一一對應(yīng)。字典相當于帶有各自名稱的元素組成的集合,與序列不同的是字典中的元素沒有排列順序。(3)集合類型Python還提供了一種稱為集合的數(shù)據(jù)結(jié)構(gòu)。集合當中的元素是不能重復(fù)出現(xiàn),集合中的元素是相對唯一的,并且元素不存在排列順序。集合類型包括可變集合(set)和不可變集合(frozenset)。3.2.3Python數(shù)據(jù)結(jié)構(gòu)組成2.可變數(shù)據(jù)類型與不可變數(shù)據(jù)類型區(qū)別Python中可變數(shù)據(jù)類型有列表(list)和字典(dict),不可變數(shù)據(jù)類型有整型(int)、浮點型(float)、字符串型(string)和元組(tuple)。
可變數(shù)據(jù)類型可以直接對數(shù)據(jù)結(jié)構(gòu)對象進行元素的賦值修改、刪除或增加操作,而不需要重新創(chuàng)建一個對象。
不可變數(shù)據(jù)類型是不允許變量的值發(fā)生變化,如果改變了變量的值,相當于是新建了一個對象。3.2.4列表
列表(list)是Python對象作為其元素并按順序排列構(gòu)成的有序集合。列表中的每個元素都有各自的位置編號,稱為索引。列表中的元素不需要具有相同的數(shù)據(jù)類型。1.創(chuàng)建列表
在Python中創(chuàng)建列表的方法有兩種,一種是使用方括號[]創(chuàng)建,另一種是使用list()函數(shù)創(chuàng)建。
(1)
使用方括號[]創(chuàng)建列表,只需要把所需的列表元素用逗號分隔開,并將這些列表元素用方括號([])括起來即可。3.2.4列表1.創(chuàng)建列表(2)使用list()函數(shù)創(chuàng)建列表Python中l(wèi)ist()函數(shù)的作用實質(zhì)上是將傳入的數(shù)據(jù)結(jié)構(gòu)換成列表類型。例如向函數(shù)傳入一個元組對象,就會將對象從元組類型轉(zhuǎn)變?yōu)榱斜眍愋汀H绻粋魅肴魏螌ο蟮絣ist()函數(shù)中,則會創(chuàng)建一個空列表,而通過list()函數(shù)對字符串創(chuàng)建列表非常有效。2.列表索引
列表是屬于序列類型的數(shù)據(jù)結(jié)構(gòu),列表中的每個元素都是有各自的位置編號(稱為索引)。列表索引與字符串的索引類似,也分為正索引(也稱為索引)和負索引兩種。3.2.4列表3.列表元素的提取和切片操作(1)通過索引訪問提取列表元素
為提取列表中的某個元素,可采用在列表對象后面緊接方括號[i],其中i是指定的索引。如果索引超出了列表正索引或負索引的范圍,Python會返回一個錯誤。(2)列表切片操作
列表切片操作時,需要傳入所提取子序列起始元素的索引,終止元素的索引和提取的步長值,此時得到的序列切片將包含從起始元素開始,以提取步長為間隔,到終止元素之前的所有元素。
切片操作的格式:序列對象[起始元素索引:終止元素索引:步長值]3.2.4列表4.列表中常用函數(shù)和方法
(1)列表元素的添加
①append()函數(shù):使用append()函數(shù)向列表對象中添加元素的方法就是向append傳入需要添加到列表對象的一個元素,則該元素會被追加到列表的尾部。
②extend()函數(shù):使用extend()函數(shù)能夠?qū)⒘硪粋€列表添加到列表的末尾,相當于將兩個列表進行拼接。
③insert()函數(shù):使用insert()函數(shù)也可以向列表添加一個元素,但與append()函數(shù)不同是,insert()函數(shù)可以在指定位置添加。
具體示例見教材。3.2.4列表
(2)刪除列表元素
①
使用del語句刪除列表元素
格式:del列表[索引號]
②
使用pop語句刪除列表元素
使用pop語句刪除列表元素的方法是將元素的索引傳入pop語句中,將會獲取該元素,并將其在列表中刪除,相當于把列表中的元素抽離出來。若不指定元素位置,pop語句將指定是列表中最后一個元素。
使用pop語句格式:列表對象.pop(索引號)。3.2.4列表
(2)刪除列表元素
③使用remove語句刪除列表元素
除了指定元素的位置進行元素的刪除外,還可以指定元素進行刪除。將指定的元素放入remove語句,則列表中第一次出現(xiàn)的該元素會被刪除。
使用remove語句格式如下:列表對象.remove(元素值)。(3)
修改列表元素
由于列表是可變的,修改列表元素最簡單的方法是提取該元素并進行賦值操作。在對列表進行添加元素、刪除元素和修改元素操作時,如果需要保留原來的列表不變,只有采用copy語句創(chuàng)建列表的副本。copy語句的格式:列表對象.copy()3.2.4列表
(4)查詢列表元素位置
利用列表方法index來查詢指定元素在列表中第一次出現(xiàn)的位置索引。
判斷列表中是否包含某個元素,還可以使用in函數(shù)。in函數(shù)的格式如下。
元素in列表對象Python中還有其他常用的操作見表3-6。
3.2.5元組
元組與列表相似,都是有序元素的集合,并可以包含任意類型的元素。但元組與列表不同的是元組是不可變的,也就是說元組一旦創(chuàng)建后就不能修改。1.創(chuàng)建元組
(1)使用園括號()創(chuàng)建元組
元組創(chuàng)建很簡單,只需要使用園括號將有序元素括起來,并用逗號隔開。(2)使用tuple()函數(shù)創(chuàng)建元組tuple()函數(shù)能夠?qū)⑵渌麛?shù)據(jù)結(jié)構(gòu)對象轉(zhuǎn)換成元組類型。
具體示例見教材。
3.2.5元組2.元組索引
元組與列表類似,也分為正索引(也稱為索引)和負索引兩種。3.元組元素的提取和切片操作
(1)通過索引訪問提取元素
與列表索引訪問提取元素一樣,只要傳入元素索引,就可以獲得對應(yīng)的元素。
(2)元組切片操作
元組切片操作與列表類似,只需要傳入所提取子序列起始元素的索引,終止元素的索引和提取的步長值即可。具體示例見教材。
3.2.5元組4.元組解包
將元組中的各個元素賦值給多個不同變量的操作通常稱為元組解包,元組解包的格式如下。var1,var2,…varn=tuple5.元組中常用方法和函數(shù)
元組中常用函數(shù)和方法見表3-7。【例3-4】說明Python中列表與元組的運用3.2.6字典
字典主要是通過鍵來訪問對應(yīng)的元素,為了獲取指定鍵所關(guān)聯(lián)的值,將鍵放到一對方括號中,如“值=字典對象[鍵]”。1.創(chuàng)建字典
(1)使用花括號{}創(chuàng)建字典
字典是用花括號({})括起來的一系列鍵值對,其中每個鍵值(key=>value)對的鍵與值之間用冒號(:)分隔,各鍵值對之間用逗號(,)隔開,字典的格式如下。{key1:value1,key2:value2…,keyn:valuen}
(2)使用dict()函數(shù)創(chuàng)建字典
具體示例見教材。3.2.6字典2.獲取字典的元素
(1)通過鍵獲取字典元素
(2)使用字典get()函數(shù)具體示例見教材。3.字典常用函數(shù)和方法
(1)添加字典元素
通過向字典中傳入一個新的鍵,并對這個新鍵進行賦值操作,可實現(xiàn)向字典中添加一個元素的功能,其格式如下。dict_name[new_key]=new_value
字典中的update方法可實現(xiàn)將兩個字典中的鍵值對進行合并。3.2.6字典(2)刪除字典元素
使用del語句可以刪除某個鍵值對,另外,字典也包含pop語句,只要傳入鍵,函數(shù)就能將對應(yīng)的值從字典中抽離,若要清空字典內(nèi)容,可以使用字典方法的clear()函數(shù)。(3)修改字典元素,可使用鍵訪問賦值來修改。(4)查詢和獲取字典元素信息
除了可以使用字典元素提取的方法進行查詢外,還可以使用in()函數(shù)進行判斷。在字典方法中,可以使用keys獲取字典中的所有鍵,values獲取字典中的所有值,itmes得到字典中的所有鍵值對。
【例3-5】說明Python中字典的運用。3.2.7集合
集合(set)就是一個由唯一元素組成的非排序的集合體。1.創(chuàng)建集合
創(chuàng)建可變集合方法是使用花括號{}或set()函數(shù)。其格式如下。value0,value1,value2…}#花括號中元素是數(shù)字、字符串、元組set(value)#value是列表或元組2.集合的運算
見表3-8集合運算方法和表3-9集合運算符,。3.集合常用函數(shù)和方法
見表3-10集合常用函數(shù)和方法
【例3-6】說明Python中集合的運用。3.3.1if條件語句if條件語句的基本語法格式如下。
if條件表達式:
語句塊if語句執(zhí)行過程,首先判斷條件表達式(也就是布爾表達式)是否成立,即條件表達式是否為真(True),如果為真(True),則執(zhí)行冒號(:)下面的語句塊,否則,就不執(zhí)行該語句塊。if語句控制結(jié)構(gòu)圖如圖3-4所示。
3.3.1if條件語句
除了單路分支語句外,還會經(jīng)常遇到多路分支語句。多路分支語句的語法格式如下。if條件表達式1:
分支一語句塊elif條件表達式2:
分支二語句塊else:
分支三語句塊
3.3.2while循環(huán)控制語句Python中的循環(huán)控制語句有while語句和for語句,其中,while語句是常用的循環(huán)控制語句之一,它的語法格式如下。while(條件表達式):
語句塊
while語句的執(zhí)行過程,首先判斷條件表達式是否為真,如果結(jié)果為真,則執(zhí)行條件表達式冒號(:)后的語句塊,執(zhí)行完畢后再次判斷條件表達式是否為真,如果仍然為真,則再次執(zhí)行冒號(:)后的語句塊,如此反復(fù),直到條件表達式為假。循環(huán)控制語句的控制結(jié)構(gòu)如圖3-5所示。
3.3.3for循環(huán)控制語句
在Python中,for循環(huán)是一個通用的序列迭代器,可以遍歷任何有序列的序列,如字符串、列表、元組等。Python中的for語句接收可迭代對象,如序列和迭代器作為其參數(shù),每次循環(huán)可以調(diào)取其中的一個元素。Python的for循環(huán)看上去像偽代碼,非常簡潔。for循環(huán)控制語句的格式如下。
for<變量>in<序列>:
語句塊
。
3.3.4range()函數(shù)作用range()函數(shù)是Python的內(nèi)置函數(shù),它可以返回一系列連續(xù)添加的整數(shù),生成一個列表對象。range()函數(shù)常用在for循環(huán)中可作為索引使用。
在Python3.0中range()函數(shù)是一個迭代器。range()函數(shù)語法格式如下。range(start,end[,step])1、函數(shù)中的參數(shù)說明2、在Python中,range()函數(shù)的作用
。
3.3.5break、continue、pass語句1.break語句
在while和for循環(huán)中,break語句的作用是終止循環(huán)語句,即循環(huán)條件沒有False條件或者序列還沒被完全遞歸完,就停止執(zhí)行循環(huán)語句,跳出循環(huán)。在嵌套循環(huán)中,break語句可以停止執(zhí)行最深層的循環(huán),并開始執(zhí)行下一行代碼。
在Python中,break語句的語法為break。
。
3.3.5break、continue、pass語句2.continue語句
在while和for循環(huán)中,continue語句作用是告訴Python跳過當前循環(huán)的剩余語句,然后繼續(xù)進行下一輪循環(huán)。continue語句與break語句不同,continue語句是跳出本次循環(huán),而break語句是跳出整個循環(huán)。continue語句的語法格式為continue。3.pass語句pass是空語句,作用是保持程序結(jié)構(gòu)的完整性。pass語句不做任何事情,一般用做占位語句。pass語句的語法格式為pass。
。
3.4.1自定義函數(shù)
在Python中定義函數(shù)方法是以def關(guān)鍵詞開頭,其后緊接函數(shù)標識符名稱和圓括號()。園括號內(nèi)包含將要在函數(shù)體中使用的形式參數(shù)(簡稱形參),各參數(shù)之間用逗號分割,定義語句以冒號(:)結(jié)束。函數(shù)體編寫另起一行,函數(shù)體的縮進為4個空格或者一個制表符,函數(shù)定義的語法格式如下。def函數(shù)名(參數(shù)列表):
函數(shù)體3.4.2設(shè)置函數(shù)參數(shù)
參數(shù)對于函數(shù)而言,只是作為函數(shù)的輸入,目的是調(diào)用函數(shù)時,可以傳遞不同的值給函數(shù),然后得到相應(yīng)的結(jié)果。
在定義函數(shù)時,函數(shù)名后面,園括號中的變量名稱為形式參數(shù),或者稱為"形參";在調(diào)用函數(shù)時,函數(shù)名后面,園括號中的變量名稱叫做實際參數(shù),或者稱為"實參"。Python中的函數(shù)參數(shù)主要有位置參數(shù)、關(guān)鍵字參數(shù)、默認參數(shù)和可變參數(shù)。3.4.3返回函數(shù)值
函數(shù)可以處理一些數(shù)據(jù),并返回一個或一組值。函數(shù)返回的值稱為返回值。如果想要保存或者調(diào)用函數(shù)的返回值,需要用到return語句。
Python對函數(shù)返回值的數(shù)據(jù)類型沒有限制,包括列表或字典等復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。當程序執(zhí)行到函數(shù)中的return語句時,就會將指定的值返回并結(jié)束函數(shù),后面語句不會被執(zhí)行。3.4.4調(diào)用自定義函數(shù)Python中使用“函數(shù)名()”的格式對函數(shù)進行調(diào)用,根據(jù)參數(shù)傳入方式不同,總共有3種函數(shù)調(diào)用方式,分別為位置參數(shù)調(diào)用、關(guān)鍵字參數(shù)調(diào)用、可變參數(shù)調(diào)用。具體示例見教材。
3.4.5局部變量和全局變量1.局部變量
在定義函數(shù)時,往往需要在函數(shù)內(nèi)部對變量進行定義和賦值,在函數(shù)體內(nèi)定義的變量為局部變量,局部變量只能在其被賦值的函數(shù)內(nèi)部訪問。2.全局變量
定義在函數(shù)體外的變量稱為全局變量。全局變量可以在函數(shù)體內(nèi)被調(diào)用。具體示例見教材。3.4.6函數(shù)嵌套Python允許在函數(shù)中定義另外一個函數(shù),這就是函數(shù)的嵌套。定義在其他函數(shù)內(nèi)部的函數(shù)稱為內(nèi)建函數(shù),而包含有內(nèi)建函數(shù)的函數(shù)稱為外部函數(shù)。其中,內(nèi)建函數(shù)中的局部變量獨立于外部函數(shù),如果想使用外部函數(shù)的變量,則需要聲明該變量為全局變量。具體示例見教材3.4.7匿名函數(shù)Python是使用lambda創(chuàng)建匿名函數(shù)。所謂匿名,就是不使用def語句定義一個函數(shù)。lambda的主體是一個表達式,只能在lambda表達式中封裝有限的邏輯。lambda函數(shù)擁有自己的命名空間,并且不能訪問自己參數(shù)列表之外或全局命名空間里的參數(shù)。具體示例見教材。項目實踐項目描述
設(shè)計一個購物車處理程序,完成如下操作。創(chuàng)建商品價格表,包括商品名稱、商品價格,商品內(nèi)容自擬。創(chuàng)建一個購物車,購物車用于保存所購商品名稱和商品價格。輸入提示信息:購物金額上限、商品編號或p打印,m移出,v查看,q退出操作符。當購物車內(nèi)商品貨款合計大于購物金額時,提示不能購買商品。當購物車內(nèi)商品貨款合計小于購物金額時,返回重新選擇購物操作。選擇“p”打印出購物清單,包括商品名稱、商品價格、購物合計金額和余額選擇“m”移出購買商品,首先顯示購物清單,輸入購買車中商品編號,刪除購物車中商品,重新顯示修改后購物清單。選擇“v”查看購物清單。選擇“q”退出購物程序。本章小結(jié)
本章介紹了Python基礎(chǔ)語法,Python的數(shù)字、字符串、列表、元組、字典和集合等數(shù)據(jù)類型的特點和運用,Python的條件分支語句、for循環(huán)和while循環(huán)語句運用,以及函數(shù)的基本概念,創(chuàng)建函數(shù)和調(diào)用函數(shù)的方法等。最后通過項目實踐,介紹了運用Python的列表、流程控制語句和函數(shù),設(shè)計一個Python購物車項目。謝謝!第4章NumPy數(shù)組與矢量計算學(xué)習(xí)目標:
了解NumPy和SciPy作用與安裝。
掌握創(chuàng)建數(shù)組對象方法。
掌握數(shù)組的索引、切片和其他操作。
掌握數(shù)組的運算和通用函數(shù)使用。
掌握NumPy矩陣創(chuàng)建、計算和操作。
掌握隨機數(shù)生成的方法。NumPy(NumericalPython的縮寫)是一個開源的Python科學(xué)計算庫,它是一個由多維數(shù)組對象和用于處理數(shù)組的例程集合組成的庫。
1.NumPy的基本功能如下。提供了一個具有矢量算術(shù)運算和復(fù)雜廣播功能的快速且節(jié)省空間的多維數(shù)組對象ndarray。用于對數(shù)組執(zhí)行元素級計算以及直接對數(shù)組執(zhí)行數(shù)學(xué)運算的函數(shù)。用于讀寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具,以及用于操作內(nèi)存映射文件的工具。提供了線性代數(shù)、隨機數(shù)生成以及傅立葉變換功能。用于集成由C、C++、Fortran等語言編寫的代碼的工具。在數(shù)據(jù)分析方面,NumPy還可作為在算法之間傳遞數(shù)據(jù)的容器。
4.1.1NumPy簡介2.在Python中使用NumPy的優(yōu)勢①在數(shù)值計算時,使用NumPy能夠直接對數(shù)組和矩陣進行操作。②NumPy中數(shù)組的存儲效率和輸入輸出性能均遠遠優(yōu)于Python中等價的基本數(shù)據(jù)結(jié)構(gòu)。③NumPy的大部分代碼都是用C語言寫成的,這使得NumPy比純Python代碼高效得多。④NumPy通常與SciPy(ScientificPython)和Matplotlib(繪圖庫)一起使用。⑤NumPy是開源的庫。4.1.1NumPy簡介1.測試Python環(huán)境中是否安裝了NumPy
在Windows操作系統(tǒng)下,按【win】+【r】鍵,進入cmd命令窗口,輸入“python”命令,按回車鍵,進入Python命令窗口。在Python命令窗口中輸入“fromnumpyimport*”命令,如果在命令窗口中出現(xiàn)“ModuleNotFoundError:Nomodulenamed‘numpy’”的錯誤提示,則需要安裝NumPy。在Windows操作系統(tǒng)下安裝NumPy方法PyCharm安裝NumPy方法
4.1.2NumPy安裝與測試
SciPy是世界著名的Python開源科學(xué)計算庫,它是建立在NumPy基礎(chǔ)之上,增加了眾多的數(shù)學(xué)、科學(xué)以及工程計算中常用的庫函數(shù)。它增加的功能包括插值、積分、最優(yōu)化、統(tǒng)計、線性代數(shù)、傅里葉變換、圖像處理和常微分方程求解器等一些專用函數(shù)。
與NumPy庫相同,SciPy也是需要單獨安裝,安裝步驟如下。1.測試Python環(huán)境中是否安裝了SciPy2.在Windows操作系統(tǒng)下安裝SciPy3.
PyCharm安裝SciPy4.1.3SciPy簡介及其安裝與測試
在科學(xué)計算中,常常會遇到數(shù)組和矩陣的計算,如有兩個一維數(shù)組x和y,其中,x的值為0-10的整數(shù),y的值為0-10的整數(shù)的平方,需要計算x與y的一維數(shù)組相加。1.利用Python的循環(huán)語句來實現(xiàn)兩個一維數(shù)組相加示例2.利用NumPy實現(xiàn)兩個一維數(shù)組相加的示例3.比較兩種方法的計算速度4.1.4NumPy的簡單應(yīng)用:一維數(shù)組相加
NumPy提供了兩種基本對象:ndarray(N-dimensionalArrayObject)和ufunc(UniversalFunctionObject)。其中ndarray是一個多維數(shù)組對象,而ufunc則是能夠?qū)?shù)組進行處理的函數(shù)。NumPy數(shù)組一般是同質(zhì)的(但特殊的數(shù)組類型可以是異質(zhì)的),即數(shù)組中所有元素的數(shù)據(jù)類型必須一致。NumPy數(shù)組的下標也是從0開始的。數(shù)組元素的數(shù)據(jù)類型用數(shù)據(jù)類型對象表示,數(shù)據(jù)類型對象是numpy.dtype類的實例。4.2.1創(chuàng)建數(shù)組對象
利用NumPy提供的array()函數(shù)可以創(chuàng)建一維或多維數(shù)組,其基本語法格式如下。numpy.array(object,dtype=None,copy=True,order=None,subok=False,ndmin=0)
其中:object:表示想要創(chuàng)建數(shù)組,無默認。dtype:表示數(shù)組的所需要的數(shù)據(jù)類型,默認為None。ndmin:指定生成數(shù)組應(yīng)該具有的最小維數(shù),默認為None。
在創(chuàng)建數(shù)組時,object是唯一必要的參數(shù),其余參數(shù)均為默認的可選參數(shù)。4.2.1創(chuàng)建數(shù)組對象創(chuàng)建數(shù)組后,選取數(shù)組中的某個特定元素的方法如下。
數(shù)組名[m,n]
其中m和n為數(shù)組元素下標。注意,數(shù)組的下標是從0開始。
例如在example4-3示例中,創(chuàng)建了一個二維數(shù)組arr2,arr2數(shù)組元素及與其對應(yīng)的位置如表4-1、表4-2所示。4.2.2選取數(shù)組元素數(shù)組的屬性及說明如表4-3所示4.2.3數(shù)組的屬性
說明,數(shù)組的shape屬性不僅能顯示數(shù)組的行數(shù)或列數(shù),而且還可以調(diào)整數(shù)組的行和列的大小。1.使用arange()函數(shù)創(chuàng)建一維數(shù)組2.使用linspace()函數(shù)創(chuàng)建數(shù)組3.使用logspace()函數(shù)創(chuàng)建等比數(shù)列4.使用zeros()、eye()、identity()、diag()和ones()函數(shù)創(chuàng)建特殊數(shù)組5.使用asarray()函數(shù)創(chuàng)建數(shù)組6.使用empty()函數(shù)創(chuàng)建數(shù)組具體示例見教材。4.2.4創(chuàng)建數(shù)組的其他方法Python支持的數(shù)據(jù)類型有整型、浮點型以及復(fù)數(shù)型,但這些類型不足以滿足科學(xué)計算的需求,因此NumPy添加了很多其他的數(shù)據(jù)類型。在實際應(yīng)用中,為了提高計算結(jié)果的準確度,需要使用不同精度的數(shù)據(jù)類型,并且不同的數(shù)據(jù)類型所占用的內(nèi)存空間也是不同的。在NumPy中,大部分數(shù)據(jù)類型名是以數(shù)字結(jié)尾的,這個數(shù)字表示其在內(nèi)存中占用的位數(shù)。
1.NumPy中支持的數(shù)據(jù)類型
見表4-4NumPy的基本數(shù)據(jù)類型及描述4.2.5Numpy的數(shù)據(jù)類型2.數(shù)組的數(shù)據(jù)類型轉(zhuǎn)換數(shù)組有一個dtype屬性,通過該屬性可以查看數(shù)組的數(shù)據(jù)類型,方法是數(shù)組名.dtype。而數(shù)組的數(shù)據(jù)類型在創(chuàng)建數(shù)組時就已經(jīng)通過dtype參數(shù)確定了,如果想實現(xiàn)數(shù)組中數(shù)值類型的轉(zhuǎn)換可采用astype()函數(shù)。astype()函數(shù)的格式如下。數(shù)組名.astype(numpy.數(shù)據(jù)類型)4.2.5Numpy的數(shù)據(jù)類型3.自定義數(shù)據(jù)類型
自定義數(shù)據(jù)類型是一種異構(gòu)數(shù)據(jù)類型,可以將它看作是電子表格的標題行的數(shù)據(jù)。例如,創(chuàng)建一個存儲產(chǎn)品價格信息的數(shù)據(jù)類型。其中,產(chǎn)品名稱是用字符串表示的長度為50個字符,產(chǎn)品價格是用32位單精度浮點數(shù)表示。那么,使用自定義數(shù)據(jù)類型來創(chuàng)建數(shù)組的方法如下。
(1)使用dtype創(chuàng)建自定義數(shù)據(jù)類型
(2)
查看數(shù)據(jù)類型,可直接查看或使用numpy.dtype()函數(shù)查看
(3)使用array()函數(shù)創(chuàng)建數(shù)組時,使用dtype指定數(shù)組的數(shù)據(jù)類型為pro_type(自定義數(shù)據(jù)類型)具體示例見教材4.2.5Numpy的數(shù)據(jù)類型1.一維數(shù)組的索引與切片
一維數(shù)組的操作類似于Python中列表(list)類型的操作。如:
一維數(shù)組arr=[a0,a1,a2,a3,a4……,an]
數(shù)組索引(下標)01234n(1)利用數(shù)組索引(下標)獲取指定元素
獲取數(shù)組中指定元素的方法如下。
數(shù)組名[索引(下標)]
例如,獲取數(shù)組arr中第4個元素a3用arr[3]即可。4.3.1數(shù)組的索引和切片一維數(shù)組的索引與切片(2)數(shù)組的切片
截取數(shù)組中某個范圍之間元素的方法如下。
數(shù)組名[start:end:step]
其中,start表示截取數(shù)組中開始元素的索引(下標),end表示截取數(shù)組中結(jié)束元素的索引(下標),但是不包括end索引(下標)所指定的元素,step表示步長。
例如,截取arr數(shù)組中第2個元素至第5個元素,包括第5個元素,則使用arr[1:5]。4.3.1數(shù)組的索引和切片2.二維數(shù)組的索引與切片
二維數(shù)組是由行和列組成,二維數(shù)組中的每一行相當于一維數(shù)組。二維數(shù)組中元素的索引是由該元素所在的行下標和列下標組成,即由元素的行索引和列索引組成。
如arr是二維數(shù)組,該二維數(shù)組元素用arr[行索引,列索引]表示,該二維數(shù)組中元素與索引的對應(yīng)關(guān)系如下。4.3.1數(shù)組的索引和切片(1)利用二維數(shù)組的行索引和列索引獲取指定元素
方法:
數(shù)組名[行索引,列索引]
例如,獲取二維數(shù)組中第2行第2列的元素,用arr[1,1]即可。(2)二維數(shù)組的切片
截取二維數(shù)組中某個區(qū)域之間元素的方法:
數(shù)組名[rows_start:rows_end:rows_step,cols_start:cols_end:cols_step]
其中:rows_start:rows_end表示截取數(shù)組中元素的行索引范圍,
cols_start:cols_end表示截取數(shù)組中元素的列索引范圍,但不包括rows_end行索引和cols_end列索引所指定的元素,rows_step表示行索引的步長,cols_step表示列索引的步長。4.3.1數(shù)組的索引和切片
示例代碼example4-5見教材3.整數(shù)索引
整數(shù)索引就是從兩個序列的對應(yīng)位置取出兩個整數(shù)來組成行下標和列下標。
示例代碼example4-6見教材。4.布爾值索引
當結(jié)果對象是布爾運算(例如比較運算符)的結(jié)果時,將使用布爾值索引。
示例代碼example4-7見教材。4.3.1數(shù)組的索引和切片1.用元組設(shè)置維度修改數(shù)組的形狀方法:
數(shù)組名.shape=(x0,x1,x2…,xn)
參數(shù)x0-xn表示數(shù)組中每個維度上的大小,例如arr.shape=(3,4)表示將arr數(shù)組修改成3行4列數(shù)組,利用該方法會改變原數(shù)組arr的形狀。2.reshape()函數(shù)
用reshape()函數(shù)修改數(shù)組的形狀方法:
數(shù)組名.reshape(x0,x1,x2…,xn)
參數(shù)x0-xn表示數(shù)組中每個維度上的大小。例如arr.reshape(3,4)生成一個3行4列新數(shù)組,而原數(shù)組arr不會改變。如果指定的維度和數(shù)組的元素數(shù)目不吻合,則函數(shù)將拋出異常。
4.3.2修改數(shù)組形狀3.resize()函數(shù)
該函數(shù)是返回指定大小的新數(shù)組。如果新數(shù)組的大小大于原始數(shù)組的大小,則包含原始數(shù)組中的元素的重復(fù)副本,該函數(shù)修改數(shù)組形狀方法:
數(shù)組名.resize(x0,x1,x2…,xn)
參數(shù)x0-xn表示數(shù)組中每個維度上的大小。例如arr.resize(3,4)表示將arr數(shù)組修改成3行4列數(shù)組,原數(shù)組arr形狀改變。這種方法與用shape屬性修改數(shù)組的形狀相似。4.修改數(shù)組的形狀示例代碼example4-8見教材。
4.3.2修改數(shù)組形狀1.ravel()函數(shù)
在NumPy中,可以使用ravel()函數(shù)將多維數(shù)組展平(即變成一維數(shù)組),展平數(shù)組元素的順序通常是“C風(fēng)格”的,就是以行為基準。
用ravel()函數(shù)展平數(shù)組的方法:數(shù)組名.ravel()
例如arr.ravel()返回將arr數(shù)組展平成一維新數(shù)組視圖,原數(shù)組arr不改變。2.flatten()函數(shù)flatten()函數(shù)也是將多維數(shù)組展平,用flatten()函數(shù)展平數(shù)組的方法:
數(shù)組名.flatten()
例如arr.flatten()表示將arr數(shù)組展平成一維新數(shù)組,原數(shù)組arr不改變。3.數(shù)組的展平示例代碼example4-9見教材。4.3.3數(shù)組的展平1.transpose()函數(shù)
該函數(shù)可實現(xiàn)翻轉(zhuǎn)給定數(shù)組的維度,并且返回數(shù)組的1個視圖(view)。
使用transpose()函數(shù)的方法:
numpy.transpose(arr)
參數(shù)arr表示是要轉(zhuǎn)置的數(shù)組。
例如arr是一個3行5列數(shù)組,numpy.transpose(arr)函數(shù)就會返回arr數(shù)組轉(zhuǎn)置為5行3列的數(shù)組視圖,而原數(shù)組arr不改變。2.ndarray.T函數(shù)
該函數(shù)是屬于ndarray類,作用類似于numpy.transpose4.3.4數(shù)組轉(zhuǎn)置和軸對換3.rollaxis()函數(shù)
該函數(shù)可實現(xiàn)向后滾動特定的軸,直到1個特定位置。
使用rollaxis()函數(shù)方法:
numpy.rollaxis(arr,axis,start)
該函數(shù)中參數(shù)arr表示數(shù)組,axis表示要向后滾動的軸,其它軸的相對位置不會改變,start表示滾動到特定位置,默認為零,表示完整的滾動。4.swapaxes()函數(shù)
該函數(shù)是交換數(shù)組的兩個軸。對于1.10之前的NumPy版本,會返回交換后數(shù)組的視圖。
使用swapaxes()函數(shù)的方法:numpy.swapaxes(arr,axis1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級品德與社會下冊 交通與我們的生活 2教學(xué)實錄 人教新課標版
- 醫(yī)院防跌倒課件
- 小學(xué)防性侵害課件
- 2023一年級數(shù)學(xué)上冊 二 比較第3課時 蹺蹺板教學(xué)實錄 北師大版
- 2025汽車租賃合同范本2
- 冀教版信息技術(shù)小學(xué)五年級下冊《第13課 美麗的海洋世界》教學(xué)設(shè)計
- 中學(xué)生衛(wèi)生健康知識講座
- 三年級下美術(shù)教學(xué)設(shè)計+教學(xué)反思-門窗墻-蘇教版
- 2025企業(yè)辦公裝修合同模板
- 2025裝修合同協(xié)議書模板
- 鋼鐵項目環(huán)評報告 - 13環(huán)境管理與監(jiān)測計劃-2017.09.26
- 北森云計算HRSaaS一體化解決方案
- (正式版)JTT 1172.2-2023 系列2集裝箱 技術(shù)要求和試驗方法 第2部分:保溫集裝箱
- GB/T 43898-2024工程機械液壓缸用精密無縫鋼管
- 固體氧化物燃料電池產(chǎn)業(yè)化建設(shè)項目可行性研究報告
- NB-T 47037-2021 電站閥門型號編制方法
- 果農(nóng)指南:釋迦果病蟲害防治手冊
- 2024年衛(wèi)生資格(中初級)-初級藥師筆試考試歷年真題含答案
- 幼兒園繪本故事 糟糕身上長條紋了
- 2024山東春季高考春招單招日語模擬練習(xí)及答案詳解
- 《農(nóng)村發(fā)展概論》課件
評論
0/150
提交評論