「 Python數據可視化系列」4. 科學Python生態和Numpy

2021-03-02 數據與智能

來源 | 「Practical Python Data Visualization  A Fast Track Approach To Learning Data Visualization With Python」

作者 | Ashwin Pajankar

譯者 | Liangchu

校對 | gongyouliu

編輯 | auroral-L

全文共2400字,預計閱讀時間15分鐘。

第四章 科學Python生態和Numpy
             科學Python生態系統

             Numpy和Ndarrays

             不止是一維數據

             Ndarrays屬性

             Numpy常亮

             總結


第四章 科學Python生態和Numpy

在第三章中,你學習了如何使用Python 3和數據可視化庫leather創建簡單的可視化。你也知道,使用數據可視化庫leather只能實現初級的可視化。對於更複雜、更精細的可視化,我們需要使用具有高級數據處理和可視化功能的庫。

本章探討科學Python生態系統及其組件,還提供了NumPy庫的概述和一些代碼演示。本章介紹以下內容:

• 科學Python生態系統

• NumPy和ndarrays

• Ndarray屬性

• NumPy常量

在本書的其餘章節中,我們將逐一探討科學Python生態系統的組成部分。在本書中,我們將使用科學Python生態系統中的不同庫。你在本章中所獲得寶貴知識可以作為其餘章節的基礎。由於本章是一個廣泛的生態系統的介紹性章節,所以我會儘量簡短而實用地開展本章節內容。

科學Python生態系統

科學Python生態系統(The scientific Python ecosystem,SciPy)是用於數學、科學和工程的Python庫的集合。SciPy具有以下核心組成部分:

Python程式語言:在第一章中,我們探討了Python 3程式語言的安裝步驟和一些基礎知識

Numpy:這是數值Python(Numerical Python)庫,即用Python進行數值計算的基礎包。它定義了一種N維數據類型,可用於多維數據的數值計算。

SciPy庫:這包括許多可用於科學應用的數學和科學計算程序。

Matplotlib:這是一個受MATLAB啟發的Python 3數據可視化庫。

這個生態系統還有幾個重要的成員庫:

Pandas:即Python數據分析(Python data analysis)。它提供多種數據結構,如系列(series)和數據幀(data frame)。

SymPy:即符號Python(symbolic Python),是符號相關的操作庫。它用於符號數學和代數。

scikit-image:這個庫有用於圖像處理的程序

scikit-learn:這個庫有用於機器學習的程序。

通常與SciPy一起使用的交互環境是IPython或Jupyter Notebook。我們在第二章中詳細介紹了Jupyter Notebook,並且在第三章中使用了它。我們將在本書的其餘部分繼續使用它。

下一節將更詳細地介紹NumPy庫。

Numpy和Ndarrays


如前所述,NumPy是Python中數值計算的基本包。NumPy庫最有用的特性是稱為ndarray的多維容器數據結構。

ndarray是具有相同數據類型和大小的項的多維數組(也稱為容器)。我們可以在創建ndarray時定義項的大小和數據類型。與列表(list)等其他數據結構一樣,我們可以通過索引訪問數據數組的內容,ndarrays中的索引從0開始(就像C中的數組或Python中的列表一樣)。我們可以用ndarrays進行各種計算。SciPy中所有其他的庫和別的庫也識別並使用NumPy ndarrays和相關程序來表示它們的數據結構以及其上的操作。

下面讓我們從一個實際例子開始。為本章創建一個新的Jupyter筆記本,然後運行以下命令安裝NumPy庫:

!pip3 install numpy

通過運行以下命令將其導入當前筆記本:

import numpy as np

你可以創建一個列表,然後使用它創建一個簡單的數組,如下所示:

l1 = [1, 2, 3]

x = np.array(l1, dtype=np.int16)

這裡我們通過一個列表創建了一個ndarray。成員的數據類型是16位整數。你可以在https://numpy.org/devdocs/user/basics.types.html上找到它所支持數據類型的詳細列表。我們可以通過一行編寫前面的代碼:

x = np.array([1,2,3], dtype=np.int16)

接下來列印ndarray的值及其類型:

print(x)

print(type(x))

輸出如下:

[1 2 3]

<class 'numpy.ndarray'>

從輸出可以看到,它是numpy.ndarray類。如前所述,索引從0開始。我們可以通過如下方式訪問ndarray的成員來演示這一點:

print(x[0]); print(x[1]); print(x[2])

以下是輸出:

1

2

3

我們甚至可以使用負索引:-1返回最後一個元素,-2返回倒數第二個元素,依此類推。舉個例子:

print(x[-1])

如果我們使用了無效的索引值,將拋出異常:

print(x[3])

在這個語句中,我們試圖訪問ndarray中不存在的第四個元素。因此,它返回以下錯誤:

IndexError Traceback (most recent call last)

<ipython-input-4-d3c02b9c2b5d> in <module>

----> 1 print(x[3])

IndexError: index 3 is out of bounds for axis 0 with size 3

不止是一維數據


一個數組(array)可以有多個維度,如下所示:

x1 = np.array([[1, 2, 3], [4, 5, 6]], np.int16)

這表示兩行三列的二維矩陣。我們可以訪問如下單個元素:

print(x1[0, 0]); print(x1[0, 1]); print(x1[0, 2]);

我們甚至可以訪問整行:

print(x1[0, :])

print(x1[1, :])

輸出如下所示:

[1 2 3]

[4 5 6]

我們可以使用以下語句訪問整個列:

print(x[:, 0])

輸出如下:

[1 4]

我們甚至可以創建不止二維的數據。以下是創建三維(three-dimensional,3D)數組的語法:

x2 = np.array([[[1, 2, 3], [4, 5, 6]],[[0, -1, -2], [-3, -4, -5]]], np.int16)

科學和商業應用程式通常使用多維數據。Ndarray對於存儲數值數據非常有用。嘗試運行以下語句檢索前面三維矩陣的元素:

print(x2 [0, 0, 0])

print(x2 [1, 1, 2])

print(x2[:, 1, 1])

Ndarrays屬性


通過它們的屬性,我們可以了解更多關於它們的信息。首先,讓我們看看演示中的所有屬性。這個例子使用了我們之前使用的那個3D矩陣:

x2 = np.array([[[1, 2, 3], [4, 5, 6]],[[0, -1, -2], [-3, -4, -5]]], np.int16)

我們可以通過下面的語句來了解維度的數目:

print(x2.ndim)

輸出返回維度數:

3

然後我們可以按照如下方式輸出ndarray的形狀(shape):

print(x2.shape)

形狀表示維度的大小,如下所示:

(2, 2, 3)

我們可以通過如下方式確定成員的數據類型:

print(x2.dtype)

以下是輸出:

int16

我們還可以了解存儲所需的內存大小(元素數目)和字節數,如下所示:

print(x2.size)print(x2.nbytes)

輸出如下:

1224

我們可以用以下代碼計算它的轉置:

print(x2.T)

Numpy常量


NumPy庫中有許多有用的數學和科學常量,它們都可以用在程序裡。以下代碼段列印所有這些重要的常量:

print(np.inf)

print(np.NAN)

print(np.NINF)

print(np.NZERO)

print(np.PZERO)

print(np.e)

print(np.euler_gamma)

print(np.pi)

輸出如下:

inf 

nan 

-inf 

-0.0 

0.0 

2.718281828459045 

0.5772156649015329 

3.141592653589793

總結


本章介紹了NumPy和ndarrays的基礎知識。NumPy庫非常廣泛,包括許多程序,甚至還有專門介紹Numpy的書。就我們的目標而言,因為我們需要它們來進行可視化演示,所以我們將在接下來的章節中探索NumPy庫中的更多程序。

下一章將介紹一些ndarray創建程序以及使用Matplotlib進行數據可視化的基礎知識。


相關焦點

  • 【Python教程】用Python進行數據可視化
    在本文中,我將介紹如何開始使用Python和matplotlib、seaborn兩個庫對數據進行可視化。通過上面的例子,我們應該可以感受到利用可視化能多麼美麗的展示數據。而且和其它語言相比,使用 Python 進行可視化更容易簡便一些。
  • python數據科學系列:numpy入門詳細教程
    python數據科學基礎庫主要是三劍客:numpy,pandas以及matplotlib,每個庫都集成了大量的方法接口,配合使用功能強大。numpy:numerical python縮寫,提供了底層基於C語言實現的數值計算庫,與python內置的list和array數據結構相比,其支持更加規範的數據類型和極其豐富的操作接口,速度也更快numpy的兩個重要對象是
  • 數據科學|可視化圖解Python科學計算包Numpy
    NumPy包是python生態系統中數據分析、機器學習和科學計算的主力。它極大地簡化了向量和矩陣的操作。Python的一些主要軟體包依賴於NumPy作為其基礎架構的基礎部分(例如scikit-learn、SciPy、pandas和tensorflow)。
  • 4種更快更簡單實現Python數據可視化的方法
    數據可視化是數據科學或機器學習項目中十分重要的一環。通常,你需要在項目初期進行探索性的數據分析(EDA),從而對數據有一定的了解,而且創建可視化確實可以使分析的任務更清晰、更容易理解,特別是對於大規模的高維數據集。在項目接近尾聲時,以一種清晰、簡潔而引人注目的方式展示最終結果也是非常重要的,讓你的受眾(通常是非技術人員的客戶)能夠理解。
  • 推薦: 一本「高顏值」的Python語言數據可視化圖書
    所以很有必要系統性地介紹python的繪圖語法系統,包括最基礎也最常用的matplotlib包、常用於統計分析的seaborn、最新出現類似R ggplot2語法的plotnine以及用於地理空間數據可視化的basemap包。在先介紹數據可視化基礎理論後,本書系統性地介紹了幾乎所有常見的二維和三維圖表的繪製方法,包括簡單的柱形圖系列、條形圖系列、折線圖系列,地圖系列等。
  • python數據分析專題 (7):python數據分析模塊
    也就是這些python的擴展包讓python可以做數據分析,主要包括numpy,scipy,pandas,matplotlib,scikit-learn等等諸多強大的模塊,在結合上ipython交互工具 ,以及python強大的爬蟲數據獲取能力,字符串處理能力,讓python成為完整的數據分析工具。
  • 用Python構建和可視化決策樹
    步驟2:導入數據和EDA在這一步中,我們將使用python中提供的「Pandas」包來導入並在其上進行一些EDA。我們將建立我們的決策樹模型,數據集是一個藥物數據集,它是基於特定的標準給病人開的處方。讓我們用python導入數據!
  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • 如何系統地學習Python 中 matplotlib, numpy, scipy, pandas?
    Matplotlib,Numpy,SciPy 和 Pandas 這幾個庫在我們使用 Python 從事數據科學工作時都不可或缺,不過它們的用途並不相同
  • Python數據科學Numpy基礎20問
    1、什麼是numpy?一言以蔽之,numpy是python中基於數組對象的科學計算庫。提煉關鍵字,可以得出numpy以下三大特點:2、如何安裝numpy?因為numpy是一個python庫,所以使用python包管理工具pip或者conda都可以安裝。
  • python數據分析:numpy入門
    微信公眾號:學點啥玩點啥小白友好型python數據分析:numpy入門numpy:一個在python中做科學計算的基礎庫,重在數值計算,也是大部分python科學計算庫的基礎庫,多用於在大型、多維數組上執行數值計算。
  • Python 可視化神器--Plotly
    學習Python是做數分析的最基礎的一步,數據分析離不開數據可視化。Python第三方庫中我們最常用的可視化庫是 pandas,matplotlib,pyecharts,當然還有 Tableau,另外最近在學習過程中發現另一款可視化神器-Plotly,它是一款用來做數據分析和可視化的在線平臺,功能非常強大,可以在線繪製很多圖形比如條形圖、散點圖、餅圖、直方圖等等。
  • python數據分析師面試題選
    例舉幾個常用的python分析數據包及其作用數據處理和分析:NumPy, SciPy, Pandas機器學習:SciKit可視化: Matplotlib, Seaborn3.Pandas中使用的標準數據缺失標誌是什麼NaN7. 描述numpy array比python list的優勢a. numpy array比python list更緊湊,存儲數據佔的空間小,讀寫速度快。
  • python數據科學系列:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • DataCamp 推出的 Python 數據科學速查表,已經翻譯成中文啦!
    Python基礎系列推出的內容包括:Python 基礎、Python進階、導入數據及 Jupyter Notebook:Python數據科學速查表 - Python 基礎Python數據科學速查表 - Jupyter Notebook數據處理系列推出的內容包括:Numpy、Pandas 及 SciPy:
  • 利用Anaconda在Windows及Linux下搭建Python環境【手把手版】
    ❞一、同系列文章本文是Python數據分析基礎系列文章的第20篇❝python3基礎01數值和字符串(一)python3基礎02數值和字符串(二)python3基礎03列表(list)和元組(tuple)python3基礎04字典(dict)和集合(set)python3基礎
  • Python冬令營-Numpy 使用簡介
    Numpy 簡介: 使用python進入數據科學的世界!
  • 「 Python數據可視化系列」3. 使用Leather進行數據可視化
    在本章中,我們將使用Jupyter Notebook、Python、數據可視化庫leather進行基本的數據可視化。:data2 = [(2, 3), (4, 5), (5, 6), (7, 5)]我們還可以將多個系列(這裡的系列指的是不同風格的點,即data1和data2)的點可視化如下:chart=leather.Chart('Visualizing Multiple series') chart.add_dots(data1) chart.add_dots
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python NumPy可視化圖解(上)
    同時,在PyTorch、TensorFlow、Keras等深度許欸小框架中,了解numpy將顯著提高數據共享和處理能力,甚至無需過多更改就可以在GPU運行計算。n維數組是NumPy的核心概念,這樣的好處,儘管一維和而為數組的處理方式有些差異,但多數不同維數組的操作是一樣的。