版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)分析與可視化第一章數(shù)據(jù)可視化概述1.1數(shù)據(jù)、信息和知識理解1.2知識的提取流程1.3數(shù)據(jù)可視化與統(tǒng)計圖表1.4如何利用可視化幫助決策第一章數(shù)據(jù)可視化概述2《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.1.1數(shù)據(jù)和信息1.1.2知識理解1.1數(shù)據(jù)、信息和知識理解3《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.1.1數(shù)據(jù)和信息數(shù)據(jù)是得出結(jié)論的前提。一般數(shù)據(jù)和信息往往相互關(guān)聯(lián)常見數(shù)據(jù)存儲格式:(1) CSV文件
(2) 數(shù)據(jù)庫表單(3) 文檔文件(Excel、PDF、Word等格式文件)(4) HTML文件
(5) JSON文件(6) TXT文本文件
(7) XML文件1.1數(shù)據(jù)、信息和知識理解4《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.1.2知識理解知識總量的增長有多種方式,當(dāng)現(xiàn)有數(shù)據(jù)被重新排列或重組時,或當(dāng)現(xiàn)有算法發(fā)生變化時,知識也是在增加的數(shù)據(jù)分析取決于數(shù)學(xué)算法,往往這些算法用來說明數(shù)據(jù)之間的關(guān)系的知識理解常見外部數(shù)據(jù)協(xié)同的來源:社交媒體和消費者群1.1數(shù)據(jù)、信息和知識理解5《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.2.1從數(shù)據(jù)中提取信息1.2.2從信息中提取知識和理解1.2知識的提取流程6《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.2.1從數(shù)據(jù)中提取信息收集數(shù)據(jù)時一般需要處理和組織數(shù)據(jù)轉(zhuǎn)換和處理方法:如過濾、聚合、應(yīng)用相關(guān)性、縮放、歸一化以及分類等1.2知識的提取流程7《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述1.2.2從信息中提取知識和理解信息的訪問、生成、存儲、分發(fā)、搜索、壓縮和復(fù)制,可以通過信息量或數(shù)量來量化信息經(jīng)過處理、分析,可生成報告如:社交媒體消費者情緒分析1.2知識的提取流程8《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述發(fā)展過程兩階段:計算機(jī)出現(xiàn)之前的可視化以及計算機(jī)出現(xiàn)后的可視化數(shù)據(jù)分析的方式:探索性數(shù)據(jù)分析(ExploratoryDataAnalysis,EDA),探索性空間數(shù)據(jù)分析(ExploratorySpatialDataAnalysis,ESDA)1.3數(shù)據(jù)可視化與統(tǒng)計圖表9《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述基于可視化的分析過程,旨在讓技術(shù)人員等積極參與整個決策過程數(shù)據(jù)可視化由數(shù)據(jù)驅(qū)動。從常見的可視化工具開始,分析數(shù)據(jù),整合信息,加深知識的理解,慢慢拓展到交互式可視化及更深層次的內(nèi)容1.4如何利用可視化幫助決策10《數(shù)據(jù)分析與可視化》第一章數(shù)據(jù)可視化概述謝謝!ThankYou謝謝!11數(shù)據(jù)分析與可視化第二章數(shù)據(jù)可視化2.1利用數(shù)據(jù)可視化創(chuàng)造有趣的故事2.2可視化的一些最佳實踐2.3Python中的可視化工具2.4交互式可視化和布局第二章數(shù)據(jù)可視化13《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化GapminderWorld數(shù)據(jù)讀者驅(qū)動的敘述的經(jīng)典例子它收集了國際經(jīng)濟(jì)、環(huán)境、健康、技術(shù)等方面的超過600個數(shù)據(jù)指標(biāo),并提供了可以用來研究現(xiàn)實世界問題并發(fā)現(xiàn)發(fā)展模式、趨勢和相關(guān)性的工具2.1利用數(shù)據(jù)可視化創(chuàng)造有趣的故事14《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化例:交互式氣泡圖2.1利用數(shù)據(jù)可視化創(chuàng)造有趣的故事15《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化GapminderWorld數(shù)據(jù)實例可視化技術(shù)領(lǐng)域(1)科學(xué)可視化:這涉及具有固有物理實體的科學(xué)性的數(shù)據(jù)(2)信息可視化:這涉及抽象數(shù)據(jù)(空間或非空間)執(zhí)行任務(wù)(1)直觀地表示數(shù)據(jù)以幫助提升數(shù)據(jù)分析效果。(2)直觀地展示模型、數(shù)據(jù)解釋、想法、假設(shè)和洞察力。(3)為用戶的假設(shè)找到佐證或反證,以幫助改進(jìn)他們的模型。(4)幫助用戶組織和分享他們的想法。2.1利用數(shù)據(jù)可視化創(chuàng)造有趣的故事16《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化常用可視化方法(1)比較和排序。(2)相關(guān)性。(3)分布。(4)局部與整體的關(guān)系。(5)隨時間變化的趨勢。2.2可視化的一些最佳實踐17《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化比較和排序傳統(tǒng)方式為使用條形圖,但不總是最佳方式例:創(chuàng)造性的可視化展示的方式2.2可視化的一些最佳實踐18《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化基于GapminderWorld數(shù)據(jù)的非洲GDP排名前12國家數(shù)據(jù)的可視化展示相關(guān)性相關(guān)矩陣用于同時研究多個變量之間的依賴關(guān)系,矩陣中的元素代表變量之間的相關(guān)系數(shù)例:構(gòu)建簡單散點圖2.2可視化的一些最佳實踐19《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化不同性別大學(xué)生GPA與運動和看電視時長的關(guān)系例:構(gòu)建散點圖,數(shù)據(jù)之間的關(guān)聯(lián)通過帶縮放和顏色的圖進(jìn)行展示2.2可視化的一些最佳實踐20《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化用散點圖表示數(shù)據(jù)的相關(guān)矩陣?yán)河脽釄D表述數(shù)據(jù)的相關(guān)矩陣2.2可視化的一些最佳實踐21《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化用熱圖表示數(shù)據(jù)的相關(guān)矩陣分布分布分析顯示定量值在其范圍內(nèi)的分布情況常用圖表:直方圖(Histogram)和箱線圖(BoxPlot)直方圖的形狀很大程度上取決于指定的框(bin)的大小和位置;箱線圖非常適合用于顯示多個分布2.2可視化的一些最佳實踐22《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化例:用直方圖和箱線圖表述數(shù)據(jù)的相關(guān)矩陣2.2可視化的一些最佳實踐23《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化學(xué)生成績分布情況直方圖學(xué)生成績分布情況箱線圖局部與整體的關(guān)系餅圖通常用于展示局部與整體的關(guān)系分組條形圖適用于將類別中的每個元素與其他元素進(jìn)行比較,以及跨類別比較元素堆積柱形圖適合顯示總數(shù),直觀地聚合一個組中的所有類別,其缺點是使比較各個類別的大小變得更加困難。堆疊也能夠表示局部與整體的關(guān)系2.2可視化的一些最佳實踐24《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化例:堆積柱形圖2.2可視化的一些最佳實踐25《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化水果消耗情況隨時間變化的趨勢例:展示一段時間內(nèi)的趨勢2.2可視化的一些最佳實踐26《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化可穿戴設(shè)備創(chuàng)業(yè)公司投資情況通用軟件工具:即集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)特定軟件組合:即Python繪圖庫,如Bokeh、IPython、matplotlib、NetworkX、SciPy和NumPy、scikit-learn和Seaborn2.3Python中的可視化工具27《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化EnthoughtCanopy有在伯克利軟件套件(BerkeleySoftwareDistribution,BSD)開源許可協(xié)議下發(fā)布的免費版本同時包括高級文本編輯器、集成的IPython(交互式Python)控制臺、圖形包管理器和在線文檔鏈接2.3Python中的可視化工具28《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化2.3Python中的可視化工具29《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化Canopy分析環(huán)境Anaconda和IPython基于Conda的應(yīng)用程序。Conda是一個用于查找和安裝軟件包的應(yīng)用程序,包含系統(tǒng)級庫、Python模塊、可運行程序或其他組件的二進(jìn)制tarballAnaconda包含sypder-app(一個科學(xué)的Python開發(fā)環(huán)境),和一個IPython查看器2.3Python中的可視化工具30《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化2.3Python中的可視化工具31《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化Anaconda用戶界面IPython
提供了一個增強(qiáng)的交互式Pythonshell附加功能:
(1)制表符補(bǔ)全:制表符補(bǔ)全涉及變量、函數(shù)、方法、屬性和文件名的補(bǔ)全。制表符補(bǔ)全是通過GNUReadline實現(xiàn)的,非常便捷。接觸GNUReadline后,很難再愿意使用常規(guī)的命令行界面(CommandLineInterface,CLI)
(2)命令歷史記錄功能:該功能發(fā)布命令歷史記錄,可以完整記錄以前使用的命令2.3Python中的可視化工具32《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化交互式的可視化遵循兩個標(biāo)準(zhǔn)(1)人工輸入:對信息的由視覺表示的某些方面的控制必須可供人控制使用(2)響應(yīng)時間短:人所做的更改必須能夠及時“納入”可視化2.4交互式可視化和布局33《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化是否美觀是衡量布局方法強(qiáng)弱的標(biāo)準(zhǔn)之一為了使布局更具可讀性,圖結(jié)構(gòu)需要具有層次結(jié)構(gòu)或?qū)ΨQ性,布局的一個關(guān)鍵因素是空間的利用常用布局方法:(1) 環(huán)狀布局(CircularLayout)(2) 放射狀布局(RadialLayout)(3) 氣球式布局(BalloonLayout)2.4交互式可視化和布局34《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化環(huán)狀布局
環(huán)狀布局可以使用幾種不同的組合(定性和定量)在單個可視化圖表中顯示例:利用環(huán)狀布局在有限的空間內(nèi)直觀地展示復(fù)雜的關(guān)系2.4交互式可視化和布局35《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化環(huán)狀布局示例放射狀布局
放射狀一種徑向空間填充可視化技術(shù),其根節(jié)點位于圓心,不同層次的節(jié)點被放置在半徑不同的同心圓上,節(jié)點到圓心的距離對應(yīng)于它的深度2.4交互式可視化和布局36《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化例:隨著層次的增加,徑向樹會將更多的節(jié)點分布在更大的區(qū)域上2.4交互式可視化和布局37《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化放射狀布局示例氣球式布局
氣球式布局有不同的變化形式可使用不同顏色和大小的氣球(或圓圈、氣泡)來展示更多的內(nèi)容2.4交互式可視化和布局38《數(shù)據(jù)分析與可視化》第二章數(shù)據(jù)可視化氣球式布局示例謝謝!ThankYou謝謝!39數(shù)據(jù)分析與可視化第三章常見PythonIDE3.1PythonIDE3.2利用Anaconda進(jìn)行可視化3.3交互式可視化的庫第三章常見PythonIDE41《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1.1Python3.x與Python2.73.1.2不同類型的交互式工具3.1.3不同類型的PythonIDE3.1PythonIDE42《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1.1Python3.x與Python2.7Python3.x不向后兼容2.x版本主要關(guān)注Python3.x3.1PythonIDE43《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1.2不同類型的交互式工具Ipython:增強(qiáng)的交互式Pythonshell,一并包括Julia、R、Ruby等其他語言,默認(rèn)提供制表符補(bǔ)全3.1PythonIDE44《數(shù)據(jù)分析與可視化》第三章常見PythonIDE命令描述?對IPython的特性的介紹和概述等%quickref提供快速參考--help-all提供關(guān)于Python的幫助%who/%whos提供有關(guān)標(biāo)識符的信息IPython基本命令I(lǐng)pythonnotebook:基于Web的交互式計算環(huán)境3.1PythonIDE45《數(shù)據(jù)分析與可視化》第三章常見PythonIDEIPython運行示例Plotly:在線分析和數(shù)據(jù)可視化工具,包含多種語言(例如Arduino、Julia、MATLAB、Perl、Python和R)的科學(xué)圖形庫3.1PythonIDE46《數(shù)據(jù)分析與可視化》第三章常見PythonIDE五大洲人均GDP和人均壽命情況importplotly.plotlyaspyimportmatplotlib.pyplotasplt#創(chuàng)建畫布mpl_fig_obj=plt.figure()#創(chuàng)建matplotlib圖形py.plot_mpl(mpl_fig_obj)3.1PythonIDE47《數(shù)據(jù)分析與可視化》第三章常見PythonIDE將繪圖從matplotlib轉(zhuǎn)換為Plotly3.1.3不同類型的PythonIDE(1)PyCharm:提供基于JavaSwing的用戶界面。(2)PyDev:提供基于SWT的用戶界面(適用于Eclipse)。(3)InteractiveEditorforPython(IEP):提供簡單高效的Python開發(fā)環(huán)境。(4)Enthought開發(fā)的Canopy:基于PyQt。(5)ContinuumAnalytics開發(fā)的Spyder(AnacondaDistribution):基于PyQt。3.1PythonIDE48《數(shù)據(jù)分析與可視化》第三章常見PythonIDEPyCharm:少數(shù)幾個具有強(qiáng)大功能的流行IDE之一,其社區(qū)版本是免費的提供了適用于macOS、Linux和Windows的版本3.1PythonIDE49《數(shù)據(jù)分析與可視化》第三章常見PythonIDENumPy極坐標(biāo)投影示例rand_4=np.random.random_sample((2,2,2,2))-1array([[[[-0.6565232,-0.2920045],[-0.45976502,-0.70469325]],[[-0.80218558,-0.77538009],[-0.34687551,-0.42498698]]],[[[-0.60869175,-0.9553122],[-0.05888953,-0.70585856]],[[-0.69856656,-0.21664848],[-0.29017137,-0.61972867]]]])3.1PythonIDE50《數(shù)據(jù)分析與可視化》第三章常見PythonIDE創(chuàng)建隨機(jī)樣本隨機(jī)數(shù)組創(chuàng)建過程PyDev:Eclipse的插件,支持代碼重構(gòu)、圖形式代碼調(diào)試、交互式控制臺、代碼分析和代碼折疊可作為Eclipse插件安裝或直接安裝LiClipse,但需要先安裝Java183.1PythonIDE51《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1PythonIDE52《數(shù)據(jù)分析與可視化》第三章常見PythonIDEPyDev使用示例IEP:形式上與MicrosoftWindows上使用的工具相似,主要關(guān)注交互性和代碼內(nèi)省由編輯器和shell兩個主要組件組成,并使用一組可插拔工具來幫助編程關(guān)鍵特性:(1)與各種現(xiàn)代IDE一樣的代碼內(nèi)省(CodeIntrospection)。(2)通過CLI或通過IPython界面以交互方式運行Python腳本。(3)將shell作為后臺進(jìn)程運行。(4)多個shell使用不同的Python版本。3.1PythonIDE53《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1PythonIDE54《數(shù)據(jù)分析與可視化》第三章常見PythonIDE不同Python版本的同時展現(xiàn)EnthoughtCanopy:有在BSD開源許可協(xié)議下發(fā)布的免費版本組件介紹:(1)文檔瀏覽器:使用它,您可以從硬盤讀取或?qū)懭隤ython程序。(2)Python代碼編輯器:它指定了一個語法高亮的代碼編輯器,包括專用于Python代碼的附加功能。(3)Python窗格:這是一個集成的IPython提示,可用于交互式運行Python程序,而不是從文件中直接運行。(4)編輯器狀態(tài)欄:可用于顯示行號、列號、文件類型和文件路徑。3.1PythonIDE55《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1PythonIDE56《數(shù)據(jù)分析與可視化》第三章常見PythonIDECanopyIDE組件Canopy文檔瀏覽器3.1PythonIDE57《數(shù)據(jù)分析與可視化》第三章常見PythonIDECanopy包管理器Anaconda-Spyder:Anaconda是社區(qū)使用的最流行的IDE之一。它帶有大量已集成的軟件包,此IDE基于名為conda的核心組件使用conda或pip安裝或更新Python包多種選擇:IPython控制臺(ipythonqtconsole)、IPython筆記本(ipython-notebook)、spyder-app和glueviz3.1PythonIDE58《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.1PythonIDE59《數(shù)據(jù)分析與可視化》第三章常見PythonIDE
Spyder代碼編輯器和IPython控制臺Conda:命令行工具,用于管理Python的環(huán)境和包查看Conda運行的是哪個版本:Conda環(huán)境本身是一個文件系統(tǒng)目錄,其中包含特定的Conda包集合3.1PythonIDE60《數(shù)據(jù)分析與可視化》第三章常見PythonIDEconda–v3.1PythonIDE61《數(shù)據(jù)分析與可視化》第三章常見PythonIDE已正確安裝Anaconda下安裝SciPy:$condainstallSciPy用Conda安裝SciPy包3.1PythonIDE62《數(shù)據(jù)分析與可視化》第三章常見PythonIDE安裝或更新Python包:condainstall<packagename>orcondaupdate<packagename>用Conda更新matplotlib包3.1PythonIDE63《數(shù)據(jù)分析與可視化》第三章常見PythonIDE快速顯示默認(rèn)環(huán)境中安裝的所有軟件包的列表:$condalist可以使用平常的方式安裝軟件包,例如運行pipinstall或使用setup.py文件從源代碼安裝3.2.1繪制3D曲面圖3.2.2繪制方形樹狀圖3.2利用Anaconda進(jìn)行可視化64《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.2利用Anaconda進(jìn)行可視化65《數(shù)據(jù)分析與可視化》第三章常見PythonIDE常用繪圖庫:(1)Matplotlib:加上NumPy和SciPy,是與科學(xué)計算相關(guān)的Python社區(qū)的主要驅(qū)動力。IPython有一個pylab模式,專門用于支持matplotlib實現(xiàn)交互式繪圖。(2)Plotly:在瀏覽器上運行的協(xié)作繪圖和分析平臺。它支持基于IPythonnotebook的交互式圖表。使用matplotlib編寫的繪圖代碼都可以輕松導(dǎo)出為Plotly版本。(3)Veusz:用Python和PyQt編寫的GPL(GeneralPublicLicense,通用公共許可協(xié)議)繪圖包。Veusz也可以嵌入其他Python程序(4)Mayavi:3D繪圖包,支持基于Python編寫腳本(5)NetworkX:Python語言軟件包,用于創(chuàng)建、操作和研究復(fù)雜網(wǎng)絡(luò)的結(jié)構(gòu)和功能(6)pygooglechart:可用于創(chuàng)建可視化方法并支持與GoogleChartAPI進(jìn)行交互
3.2利用Anaconda進(jìn)行可視化66《數(shù)據(jù)分析與可視化》第三章常見PythonIDE(1)首先生成“X”和“Y”網(wǎng)格(Grid)importnumpyasnpX=np.arange(-4,4,0.25)Y=np.arange(-4,4,0.25)X,Y=np.meshgrid(X,Y)3.2利用Anaconda進(jìn)行可視化67《數(shù)據(jù)分析與可視化》第三章常見PythonIDE(2)繪制曲面frommpl_toolkits.mplot3dimportAxes3dfrommatplotlibimportcmfrommatplotlib.tickerimportLinearLocator,FormatStrFormatterimportmatplotlib.pyplotaspltimportnumpyasnpfig=plt.figure(figsize=(12,9))ax=fig.gca(projection='3d')#生成ZR=np.sqrt(X**2+Y**2)Z=np.sin(R)3.2利用Anaconda進(jìn)行可視化68《數(shù)據(jù)分析與可視化》第三章常見PythonIDEsurf=ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=cm.coolwarm,linewidth=0,antialiased=False)ax.set_zlim(-1.01,1.01)ax.zaxis.set_major_locator(LinearLocator(10))ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))fig.colorbar(surf,shrink=0.6,aspect=6)plt.show()用mpl_toolkits繪制3D曲面3.2.1繪制方形樹狀圖例:使用squarify算法(基于matplotlib)按GDP顯示非洲排名前12的國家3.2利用Anaconda進(jìn)行可視化69《數(shù)據(jù)分析與可視化》第三章常見PythonIDE3.2利用Anaconda進(jìn)行可視化70《數(shù)據(jù)分析與可視化》第三章常見PythonIDE#方形樹狀圖:源代碼文件(squarify.py)#運行代碼的算法來自Bruls,Huizing,vanWijk,"SquarifiedTreemaps"#squarify是由UriLaserson創(chuàng)建的defnormalize_sizes(sizes,dx,dy): total_size=sum(sizes) total_area=dx*dy sizes=map(float,sizes) sizes=map(lambdasize:size*total_area/total_size,sizes) returnsizes3.2利用Anaconda進(jìn)行可視化71《數(shù)據(jù)分析與可視化》第三章常見PythonIDEdefpad_rectangle(rect): ifrect['dx']>2: rect['x']+=1rect['dx']-=2ifrect['dy']>2:rect['y']+=1 rect['dy']-=2deflayoutrow(sizes,x,y,dx,dy): covered_area=sum(sizes)width=covered_area/dy rects=[] forsizeinsizes: rects.append({'x':x,'y':y,'dx':width,'dy':size/width}) y+=size/width returnrects3.2利用Anaconda進(jìn)行可視化72《數(shù)據(jù)分析與可視化》第三章常見PythonIDEdeflayoutcol(sizes,x,y,dx,dy):covered_area=sum(sizes) height=covered_area/dx rects=[] forsizeinsizes: rects.append({'x':x,'y':y,'dx':size/height,'dy':height}) x+=size/height returnrectsdeflayout(sizes,x,y,dx,dy): returnlayoutrow(sizes,x,y,dx,dy)ifdx>=dyelselayoutcol(sizes,x,y,dx,dy)3.2利用Anaconda進(jìn)行可視化73《數(shù)據(jù)分析與可視化》第三章常見PythonIDEdefleftoverrow(sizes,x,y,dx,dy): covered_area=sum(sizes) width=covered_area/dy leftover_x=x+width leftover_y=y leftover_dx=dx-width leftover_dy=dy return(leftover_x,leftover_y,leftover_dx,leftover_dy)defleftovercol(sizes,x,y,dx,dy): covered_area=sum(sizes) height=covered_area/dx leftover_x=x leftover_y=y+height leftover_dx=dx leftover_dy=dy-height return(leftover_x,leftover_y,leftover_dx,leftover_dy)3.2利用Anaconda進(jìn)行可視化74《數(shù)據(jù)分析與可視化》第三章常見PythonIDEdefleftover(sizes,x,y,dx,dy): returnleftoverrow(sizes,x,y,dx,dy)ifdx>=dyelseleftovercol(sizes,x,y,dx,dy)defworst_ratio(sizes,x,y,dx,dy): returnmax([max(rect['dx']/rect['dy'],rect['dy']/rect['dx'])forrectinlayout(sizes,x,y,dx,dy)])defsquarify(sizes,x,y,dx,dy): sizes=map(float,sizes) iflen(sizes)==0: return[] iflen(sizes)==1: returnlayout(sizes,x,y,dx,dy) i=13.2利用Anaconda進(jìn)行可視化75《數(shù)據(jù)分析與可視化》第三章常見PythonIDE whilei<len(sizes)andworst_ratio(sizes[:i],x,y,dx,dy)>=worst_ratio(sizes[:(i+1)],x,y,dx,dy): i+=1 current=sizes[:i] remaining=sizes[i:] (leftover_x,leftover_y,leftover_dx,leftover_dy)=leftover(current,x,y,dx,dy) returnlayout(current,x,y,dx,dy)+\squarify(remaining,leftover_x,leftover_y,leftover_dx,leftover_dy)defpadded_squarify(sizes,x,y,dx,dy): rects=squarify(sizes,x,y,dx,dy) forrectinrects: pad_rectangle(rect) returnrects3.2利用Anaconda進(jìn)行可視化76《數(shù)據(jù)分析與可視化》第三章常見PythonIDEimportmatplotlib.pyplotaspltimportmatplotlib.cmimportrandomimportsquarifyx=0y=0width=950height=733norm_x=1000norm_y=1000fig=plt.figure(figsize=(15,13)) ax=fig.add_subplot(111,axisbg='white')上述代碼squarify函數(shù)可用于展示非洲GDP排名前12的國家,其實現(xiàn)如以下代碼所示:3.2利用Anaconda進(jìn)行可視化77《數(shù)據(jù)分析與可視化》第三章常見PythonIDEinitvalues=[285.4,188.4,173,140.6,91.4,75.5,62.3,39.6,29.4,28.5,26.2,22.2]values=initvalueslabels=["SouthAfrica","Egypt","Nigeria","Algeria","Morocco","Angola","Libya","Tunisia","Kenya","Ethiopia","Ghana","Cameron"]colors=[(214,27,31),(229,109,0),(109,178,2),(50,155,18),(41,127,214),(27,70,163),(72,17,121),(209,0,89),(148,0,26),(223,44,13),(195,215,0)]#將RGB數(shù)值(r,g,b)標(biāo)準(zhǔn)化到[0,1]使其滿足matplotlib作圖需求foriinrange(len(colors)): r,g,b=colors[i] colors[i]=(r/255.,g/255.,b/255.)#值必須降序排列values.sort(reverse=True)#這些值的總和必須等于要鋪設(shè)的總面積values=squarify.normalize_sizes(values,width,height)3.2利用Anaconda進(jìn)行可視化78《數(shù)據(jù)分析與可視化》第三章常見PythonIDE#在某些情況下,加上邊緣的矩形可能會有更好的視覺效果rects=squarify.padded_squarify(values,x,y,width,height)cmap=matplotlib.cm.get_cmap()color=[cmap(random.random())foriinrange(len(values))]x=[rect['x']forrectinrects]y=[rect['y']forrectinrects]dx=[rect['dx']forrectinrects]dy=[rect['dy']forrectinrects]ax.bar(x,dy,width=dx,bottom=y,color=colors,label=labels)va='center'idx=13.2利用Anaconda進(jìn)行可視化79《數(shù)據(jù)分析與可視化》第三章常見PythonIDEforl,r,vinzip(labels,rects,initvalues): x,y,dx,dy=r['x'],r['y'],r['dx'],r['dy'] ax.text(x+dx/2,y+dy/2+10,str(idx)+"-->"+l,va=va,ha='center',color='white',fontsize=14)ax.text(x+dx/2,y+dy/2-12,"($"+str(v)+"b)",va=va,ha='center',color='white',fontsize=12) idx=idx+1ax.set_xlim(0,norm_x)ax.set_ylim(0,norm_y)plt.show()3.2利用Anaconda進(jìn)行可視化80《數(shù)據(jù)分析與可視化》第三章常見PythonIDE運行結(jié)果:非洲GDP前12國家3.3.1Bokeh3.3.2VisPy3.3交互式可視化的庫81《數(shù)據(jù)分析與可視化》第三章常見PythonIDEBokeh:交互式可視化庫,與D3.js美學(xué)非常相似,可以支持在HTML5的瀏覽器上工作安裝前需利用命令condainstalljsonschema先安裝jsonschema包3.3交互式可視化的庫82《數(shù)據(jù)分析與可視化》第三章常見PythonIDE用Conda安裝jsonschema包VisPy:用于2D或3D繪圖的可視化庫,可以利用OpenGL知識快速創(chuàng)建可視化圖表使用condainstallvispy命令或binstarsearch-tcondavispy命令3.3交互式可視化的庫83《數(shù)據(jù)分析與可視化》第三章常見PythonIDE用Conda安裝VisPy庫謝謝!ThankYou謝謝!84數(shù)據(jù)分析與可視化第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)4.2標(biāo)量選擇、切片與索引4.3數(shù)據(jù)結(jié)構(gòu)4.4使用matplotlib進(jìn)行可視化第四章數(shù)值計算與交互式繪圖86《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1.1NumPy介紹4.1.2Scipy介紹4.1.3MKL函數(shù)介紹4.1NumPy、SciPy和MKL函數(shù)87《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1.1NumPy介紹NumPy通用函數(shù)(ufunc):通過每個元素對ndarray進(jìn)行操作的函數(shù),支持類型轉(zhuǎn)換是接受標(biāo)量輸入并產(chǎn)生標(biāo)量輸出的函數(shù)的矢量化包裝器運行速度比Python函數(shù)快88《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)importnumpyasnpx=np.random.random(5)print(x)print(x+1)#對向量x在每個元素上加14.1NumPy、SciPy和MKL函數(shù)89《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖ufunc操作每個元素4.1NumPy、SciPy和MKL函數(shù)90《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖對于大規(guī)模數(shù)組,ndarray元素的操作性能要好得多importnumpyasnparr=np.arange(1000000)listarr=arr.tolist()defscalar_multiple(alist,scalar):fori,valinenumerate(alist):alist[i]=val*scalarreturnalist#使用IPython的函數(shù)計時timeitarr*2.410loops,bestof3:31.7msperloop#計算以上結(jié)果使用了31.7ms(注意單位不是s)timeitscalar_multiple(listarr,2.4)1loops,bestof3:1.39sperloop#計算以上結(jié)果使用了1.39s(注意單位是s)矩陣維度和重塑操作91《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)更改現(xiàn)有數(shù)組的維度比使用新維度從舊數(shù)據(jù)創(chuàng)建新數(shù)組更有效importnumpyasnpa=np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])print(a)[[123456][789101112]]#通過shape屬性可以查看變量的維度a.shape(2,6)#接下來改變變量的維度a.shape=(3,4)print(a)[[1234][5678][9101112]]shape()函數(shù)和reshape()函數(shù)的反向操作是ravel()
#ravel()的例子a=np.array([[1,2,3,4,5,6],[7,8,9,10,11,12]])a.ravel()array([1,2,3,4,5,6,7,8,9,10,11,12])4.1NumPy、SciPy和MKL函數(shù)92《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖插值93《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)例:interp()插值n=100importnumpyasnpimportmatplotlib.pyplotasplt#創(chuàng)建長度為n、取值為0~4π的向量x=np.linspace(0,4*np.pi,n)y=np.sin(x)#對y進(jìn)行插值yinterp=erp(x,x,y)#繪制出插值點的曲線,'-x'代表插值點的形狀plt.plot(x,yinterp,'-x')plt.show()正弦曲線插值結(jié)果向量化函數(shù)vectorize():通過逐元素應(yīng)用相同的規(guī)則,將采用標(biāo)量作為參數(shù)的函數(shù)轉(zhuǎn)換為采用數(shù)組作為參數(shù)的函數(shù)94《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)4.1NumPy、SciPy和MKL函數(shù)95《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖例1:定義函數(shù)“addition()”,采用3個標(biāo)量參數(shù)來生成一個接收3個數(shù)組參數(shù)的向量化函數(shù)importnumpyasnpdefaddition(x,y,z):returnx+2*y+3*zdefaddpoly():i=np.random.randint(25)poly1=np.arange(i,i+10)i=np.random.randint(25)poly2=np.arange(i,i+10)poly3=np.arange(10,20)print(poly1)print(poly2)print(poly3)print('-'*32)4.1NumPy、SciPy和MKL函數(shù)96《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖vecf=np.vectorize(addition)print(vecf(poly1,poly2,poly3))addpoly()[891011121314151617][567891011121314][10111213141516171819]--------------------------------[23262932353841444750]注:arrange()是Python內(nèi)置range()函數(shù)的“數(shù)組值”版本4.1NumPy、SciPy和MKL函數(shù)97《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖例2:定義一個接收一個標(biāo)量參數(shù)的函數(shù)“posquare()”來生成一個接收一個數(shù)組參數(shù)的向量化函數(shù)importnumpyasnpdefposquare(x):ifx>=0:returnx**2else:return-xi=np.random.randint(30)poly1=np.arange(i,i+10)print(poly1)[3456789101112]vecfunc=np.vectorize(posquare,otypes=[float])vecfunc(poly1)array([9.,16.,25.,36.,49.,64.,81.,100.,121.,144.])4.1NumPy、SciPy和MKL函數(shù)98《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖記錄運行時間,比較3種方法運行速度importnumpyasnpfromtimeimporttimedefincrembyone(x):returnx+1dataarray=np.linspace(1,10,1000000)t1=time()lendata=len(dataarray)print("Len="+str(lendata))print(dataarray[1:7])foriinrange(lendata):dataarray[i]+=1print("timeforloop(Novectorization)->"+str(time()-t1))t2=time()vecincr=np.vectorize(incrembyone)#1vecincr(dataarray)#2print("timeforvectorizedversion-1:"+str(time()-t2))t3=time()4.1NumPy、SciPy和MKL函數(shù)99《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖#通過以下的方法增加元素的值比較高效dataarray+=1print(dataarray[1:7])print("timeforvectorizedversion-2:"+str(time()-t3))Len=1000000[1.0000091.0000181.0000271.0000361.0000451.000054]timeforloop(Novectorization)->0.373765850067timeforvectorizedversion-1:0.1701500415802002[2.0000092.0000182.0000272.0000362.0000452.000054]timeforvectorizedversion-2:0.00133609771728515624.1NumPy、SciPy和MKL函數(shù)100《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖使程序更有效:在循環(huán)中使用前綴符號,創(chuàng)建一個本地別名并在循環(huán)中使用該別名fastsin=math.sinx=range(1000000)foriinx:x[i]=fastsin(x[i])NumPy線性代數(shù)常用函數(shù)101《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)函數(shù)名描述dot(a,b)計算兩個數(shù)組的點積Linalg.norm(x)計算一個矩陣或向量范數(shù)Linalg.cond(x)計算條件數(shù)Linalg.solve(A,b)求解線性方程組Ax=b,其輸出結(jié)果為x的值Linalg.inv(A)計算矩陣A的逆矩陣Linalg.pinv(A)計算矩陣A的偽逆矩陣Linalg.eig(A)計算矩陣A的特征值/向量Linalg.eigvals(A)計算矩陣A的特征值Linalg.svd(A)對矩陣A進(jìn)行奇異值分解(SingularValueDecomposition,SVD)NumPy常用函數(shù)4.1.2SciPy介紹SciPy:NumPy在數(shù)學(xué)、科學(xué)和工程方面的擴(kuò)展,它有許多可用于線性代數(shù)、積分、插值、快速傅里葉變換、大矩陣操作、統(tǒng)計計算等的子包102《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)SciPy子包功能的簡要描述SciPy.cluster指定了用于聚類的函數(shù),包括矢量化和k-means(k均值)Segrate指定了使用梯形、Simpson’s、Romberg和其他方法運行數(shù)值積分的函數(shù)。它還指定了常微分方程的積分函數(shù)??梢允褂煤瘮?shù)quad()、dblquad()和tplquad()對函數(shù)對象運行單重、雙重和三重集成Serpolate表示離散數(shù)值數(shù)據(jù)插值對象和線性樣條插值對象的函數(shù)和類SciPy
.linalgNumPy中l(wèi)inalg包的包裝器。NumPy的所有功能都是SciPy的一部分子包的簡要描述4.1NumPy、SciPy和MKL函數(shù)103《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖SciPy.polyld()importscipyassp#定義兩個多項式相乘的函數(shù)defmultiplyPoly():cubic1=sp.polyId([1,2,3,5])cubic2=sp.polyId([2,3,-1,2])print(cubic1)print(cubic2)print('-'*12)#輸出多項式相乘的結(jié)果
print(cubic1*cubic2)multiplyPoly()#結(jié)果如下所示32101x+2x+3x+532102x+3x-1x+2-------------------------------65432102x+7x+11x+19x+16x+1x+104.1NumPy、SciPy和MKL函數(shù)104《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖插值函數(shù)interpolate.splev()和interpolate.splprep()importnumpyasnpimportmatplotlib.pyplotaspltimportSciPyasspimportSciPerpolatet=np.arange(0,3,.1)x=np.sin(2*np.pi*t)y=np.cos(2*np.pi*t)tcktuples,uarray=erpolate.splprep([x,y],s=0)unew=np.arange(0,1.01,0.01)splinevalues=erpolate.splev(unew,tcktuples)plt.figure(figsize=(7,7))plt.plot(x,y,'x',splinevalues[0],splinevalues[1],np.sin(2*np.pi*unew),np.cos(2*np.pi*unew),x,y,'b')plt.legend(['線性','三次樣條','實際曲線’])plt.axis([-1.25,1.25,-1.25,1.25])plt.title(‘參數(shù)化樣條差值曲線’)plt.show()4.1NumPy、SciPy和MKL函數(shù)105《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖插值函數(shù)interpolate.splev()和interpolate.splprep()樣條插值結(jié)果4.1NumPy、SciPy和MKL函數(shù)106《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖數(shù)值積分
數(shù)值積分結(jié)果4.1NumPy、SciPy和MKL函數(shù)107《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖NumPy的romberg()函數(shù)計算積分importnumpyasnpfromSciPegrateimportsimps,romberga=-4.0;b=4.0;N=30x=np.linspace(a,b,N)y=16-x*xyromb=lambdax:(16-x*x)t=np.trapz(y,x)s=simps(y,x)r=romberg(yromb,a,b)4.1NumPy、SciPy和MKL函數(shù)108《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖#實際積分值aiv=(16*b-(b*b*b)/3.0)-(16*a-(a*a*a)/3.0)print('trapezoidal={0}({1:%}error)'.format(t,(t-aiv)/aiv))print('simpsons={0}({1:%}error)'.format(s,(s-aiv)/aiv))print('romberg={0}({1:%}error)'.format(r,(r-aiv)/aiv))print('actualvalue={0}'.format(aiv))trapezoidal=85.23(-0.118906%error)simpsons=85.33(-0.004100%error)romberg=85.33(-0.000000%error)actualvalue=85.33解線性方程組例:解一個有3個變量(x,y,z)的線性方程組109《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)
4.1NumPy、SciPy和MKL函數(shù)110《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖np.linalg.solve()求解線性方程importnumpyasnp#A表示系數(shù)矩陣A=np.array([[2,2,-1],[3,-3,2],[2,1,-1]])#b表示常數(shù)向量b=np.array([5,-1,3])#通過np.linalg.solve()計算結(jié)果v=np.linalg.solve(A,b)#v是所得的結(jié)果print("Thesolutionvectoris")print(v)#通過所得的v驗證結(jié)果是否正確print(np.dot(A,v)==b)[1.2.1.][TrueTrueTrue]向量化的數(shù)值導(dǎo)數(shù)Python中應(yīng)用向量化方法來計算導(dǎo)數(shù)不需要循環(huán)111《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)
4.1NumPy、SciPy和MKL函數(shù)112《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖importnumpyasnpimportmatplotlib.pyplotaspltx=np.linspace(-np.pi/2,np.pi/2,50)y=1/(1+np.sin(x)*np.sin(x))dy_actual=-np.sin(2*x)/(1+np.sin(x)*np.sin(x))**2fig=plt.figure(figsize=(7,7))ax=fig.add_subplot(111,fc='white')#我們需要提前指定dy的大小dy=np.zeros(y.shape,np.float)dy[0:-1]=np.diff(y)/np.diff(x)dy[-1]=(y[-1]-y[-2])/(x[-1]-x[-2])plt.plot(x,y,linewidth=3,color='b',label='實際函數(shù)')plt.plot(x,dy_actual,label='實際函數(shù)導(dǎo)數(shù)',linewidth=2,color='r')plt.plot(x,dy,label='前向差',linewidth=2,color='g')plt.legend(loc='upperleft')plt.show()4.1NumPy、SciPy和MKL函數(shù)113《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖運行結(jié)果函數(shù)與其導(dǎo)數(shù)和前向差4.1.3MKL函數(shù)介紹MKL:提供了向量和矩陣的高性能例程,包括FFT函數(shù)和向量統(tǒng)計函數(shù),可在Intel處理器上高效工作114《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.1NumPy、SciPy和MKL函數(shù)MKL對計算速度的影響4.2.1標(biāo)量選擇從數(shù)組中選擇元素的最簡單方法一維數(shù)組使用[rowindex],二維數(shù)組使用[rowindex,columnindex]等115《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引4.2標(biāo)量選擇、切片與索引116《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖數(shù)組元素引用importnumpyasnpx=np.array([[3.0,2,1,3],[2,4,1,5]])x[1,2]1.0給數(shù)組元素賦值x[1,2]=3xarray([[3.,2.,1.,3.],[2.,4.,3.,5.]])4.2.2切片數(shù)組切片與列表切片相似,但語法更簡單使用[:,:,...:]語法對數(shù)組進(jìn)行切片切片速記符號:117《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引:and:與0:n:1相同,其中n為數(shù)組的長度。m:andm:n:與m:n:1相同,其中n是數(shù)組的長度。:n:與0:n:1相同。::d:與0:n:d相同,其中n為數(shù)組的長度4.2.1標(biāo)量選擇4.2.2切片4.2.3數(shù)組索引4.2標(biāo)量選擇、切片與索引118《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引119《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖簡單切片importnumpyasnpx=np.array([14,15,16,17,18,19,20,5,6,7,8,9,10,11,12,13])#默認(rèn)起始位置,終止位置為2y=x[:2]yarray([14,15])#默認(rèn)起始和終止位置,步長為2y=x[::2]yarray([14,16,18,20,6,8,10,12])4.2標(biāo)量選擇、切片與索引120《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖將具有一種數(shù)據(jù)類型的元素插入具有不同數(shù)據(jù)類型的數(shù)組,NumPy會嘗試自動轉(zhuǎn)換數(shù)據(jù)類型a=[2.0,4,3,6,5]b=np.array(a)b.dtypedtype('float64')該例子表明,即使數(shù)組中只有一個元素是浮點數(shù),其余的都是整數(shù),為了讓數(shù)組正常工作,它會被初始化為浮點類型4.2標(biāo)量選擇、切片與索引121《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖flat()函數(shù)線性切片a=np.array([[1,2,3],[4,5,6],[7,8,9]])b=a.flat[:]print(b)[123456789]
4.2.3數(shù)組索引NumPy數(shù)組中的元素可以使用4種方法選擇:標(biāo)量選擇、切片、數(shù)值索引和邏輯(或布爾)索引122《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引數(shù)值索引:使用坐標(biāo)來選擇元素,切片表示法的替代方法數(shù)值索引創(chuàng)建的數(shù)組會創(chuàng)建數(shù)據(jù)的副本,而切片只是數(shù)據(jù)的視圖,而不是副本可以是列表也可以是NumPy數(shù)組,并且必須包含整數(shù)數(shù)據(jù)123《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引4.2標(biāo)量選擇、切片與索引124《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖數(shù)值索引決定了元素的位置,而數(shù)值索引數(shù)組的形狀決定了輸出的形狀a=5*np.arange(4.0)array([0.,5.,10.,15.])a[[1]]#提取下標(biāo)為1的元素array([5.])a[[0,3,2]]#提取下標(biāo)為0、3、2的元素array([0.,15.,10.])sel=np.array([2,1,2,2,1,3])#帶有重復(fù)值的數(shù)組a[sel]array([10.,5.,10.,10.,5.,15.])sel=np.array([[2,1],[3,2]])a[sel]array([[10.,5.],[15.,10.]])4.2標(biāo)量選擇、切片與索引125《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖flat()函數(shù)a=5*np.arange(8.0)array([0.,5.,10.,15.,20.,25.,30.,35.])a.flat[[3,4,1]]array([15.,20.,5.])a.flat[[[3,4,7],[1,5,3]]]array([[15.,20.,35.],[5.,25.,15.]])邏輯索引:使用邏輯來選擇元素、行或列邏輯數(shù)組與原數(shù)組大小相同,并且邏輯索引總是返回一個一維數(shù)組126《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖4.2標(biāo)量選擇、切片與索引4.2標(biāo)量選擇、切片與索引127《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖例1x=np.arange(-5,4)x<0array([True,True,True,True,True,False,False,False,False])x[x>0]array([1,2,3])x[abs(x)>=2]array([-5,-4,-3,-2,2,3])#對于二維的情況也會返回一維的數(shù)組x=np.reshape(np.arange(-8,8),(4,4))xarray([[-8,-7,-6,-5],[-4,-3,-2,-1],[0,1,2,3],[4,5,6,7]])x[x<0]array([-8,-7,-6,-5,-4,-3,-2,-1])4.2標(biāo)量選擇、切片與索引128《數(shù)據(jù)分析與可視化》第四章數(shù)值計算與交互式繪圖例2frommathimportisnana=[[1,2,float('NaN')],[4,6,5],[1,3,2],[2,-1,float('NaN')]]list2=
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)加盟合作協(xié)議(2024版)細(xì)則版
- 2025年茶園租賃合同示范文本8篇
- 2024版轎車租借合同:全面保障合同條款版
- 2025年度柴油發(fā)電機(jī)及配件全球采購合同范本4篇
- 2024年04月陜西西安銀行金融市場及資產(chǎn)管理業(yè)務(wù)人才招考筆試歷年參考題庫附帶答案詳解
- 專業(yè)空氣能熱泵熱水器安裝工程協(xié)議規(guī)范文本版B版
- 專業(yè)設(shè)備采購銷售協(xié)議:2024版細(xì)則版A版
- 2025年度綠色建筑場調(diào)研與投資評估服務(wù)合同4篇
- 二零二五年度瓷磚行業(yè)供應(yīng)鏈管理合同3篇
- 2025年環(huán)保設(shè)備產(chǎn)品區(qū)域代理合同4篇
- GA 1551.5-2019石油石化系統(tǒng)治安反恐防范要求第5部分:運輸企業(yè)
- 拘留所教育課件02
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 天津市新版就業(yè)、勞動合同登記名冊
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級上冊地理全冊單元測試卷(含期中期末試卷及答案)
- 各種焊工證件比較和釋義
評論
0/150
提交評論