Python之Numpy詳細教程


NumPy - 簡介

NumPy 是一個 Python 包。 它代表 “Numeric Python”。 它是一個由多維數組對象和用於處理數組的例程集合組成的庫。

Numeric,即 NumPy 的前身,是由 Jim Hugunin 開發的。 也開發了另一個包 Numarray ,它擁有一些額外的功能。 2005年,Travis Oliphant 通過將 Numarray 的功能集成到 Numeric 包中來創建 NumPy 包。 這個開源項目有很多貢獻者。

NumPy 操作

使用NumPy,開發人員可以執行以下操作:

  • 數組的算數和邏輯運算。
  • 傅立葉變換和用於圖形操作的例程。

與線性代數有關的操作。 NumPy 擁有線性代數和隨機數生成的內置函數。

  • NumPy – MatLab 的替代之一
  • NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用。 這種組合廣泛用於替代 MatLab,是一個流行的技術計算平台。 但是,Python 作為 MatLab 的替代方案,現在被視為一種更加現代和完整的編程語言。
  • NumPy 是開源的,這是它的一個額外的優勢。

NumPy - Ndarray 對象

NumPy 中定義的最重要的對象是稱為 ndarray 的 N 維數組類型。 它描述相同類型的元素集合。 可以使用基於零的索引訪問集合中的項目。

ndarray中的每個元素在內存中使用相同大小的塊。 ndarray中的每個元素是數據類型對象的對象(稱為 dtype)。

從ndarray對象提取的任何元素(通過切片)由一個數組標量類型的 Python 對象表示。 下圖顯示了ndarray,數據類型對象(dtype)和數組標量類型之間的關系。

Ndarray

ndarray類的實例可以通過本教程后面描述的不同的數組創建例程來構造。 基本的ndarray是使用 NumPy 中的數組函數創建的,如下所示:

numpy.array

它從任何暴露數組接口的對象,或從返回數組的任何方法創建一個ndarray。

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

上面的構造器接受以下參數:

 

 

 看看下面的例子來更好地理解。

 

 

 

 

 

 

 

 

 

 NumPy - 數據類型

 

 

 數據類型對象 (dtype)

 數據類型對象描述了對應於數組的固定內存塊的解釋,取決於以下方面:

  • 數據類型(整數、浮點或者 Python 對象)
  • 數據大小
  • 字節序(小端或大端)
  • 在結構化類型的情況下,字段的名稱,每個字段的數據類型,和每個字段占用的內存塊部分。
  • 如果數據類型是子序列,它的形狀和數據類型。

字節順序取決於數據類型的前綴<或>。 <意味着編碼是小端(最小有效字節存儲在最小地址中)。 >意味着編碼是大端(最大有效字節存儲在最小地址中)。

dtype可由一下語法構造:

numpy.dtype(object, align, copy)

  參數為:

  • Object:被轉換為數據類型的對象。
  • Align:如果為true,則向字段添加間隔,使其類似 C 的結構體。
  • Copy ? 生成dtype對象的新副本,如果為flase,結果是內建數據類型對象的引用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

每個內建類型都有一個唯一定義它的字符代碼:

  • 'b':布爾值
  • 'i':符號整數
  • 'u':無符號整數
  • 'f':浮點
  • 'c':復數浮點
  • 'm':時間間隔
  • 'M':日期時間
  • 'O':Python 對象
  • 'S', 'a':字節串
  • 'U':Unicode
  • 'V':原始數據(void)

NumPy - 數組屬性

這一章中,我們會討論 NumPy 的多種數組屬性。

ndarray.shape

這一數組屬性返回一個包含數組維度的元組,它也可以用於調整數組大小。

 

 

 

 

 

 

 

 

 

ndarray.ndim

這一數組屬性返回數組的維數。

 

添加/刪除元素

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM