1. 程式人生 > >Numpy介紹與基礎知識

Numpy介紹與基礎知識

什麼是Numpy?

Numpy是Python中科學計算的基礎軟體包
它提供多維陣列物件、多種派生物件(如掩碼陣列、矩陣)以及用於快速運算元組的函式,包括數學、邏輯、陣列形狀變換、排序、選擇、統計運算等等。

Numpy包的核心是ndarray物件。
它封裝了python原生的同資料型別的n維陣列,為了保證其效能優良,其中許多操作都是在本地編譯後代碼中執行的。

Numpy陣列相比python內建序列主要區別如下:

  • Numpy陣列在建立時固定大小,更改ndarray的大小將建立一個新陣列並銷燬原陣列;
  • Numpy陣列元素具有相同資料型別,佔用相同記憶體;
  • Numpy陣列有助於對大量資料高效地完成高階數學運算和其他型別操作;

對於涉及ndarray物件的算術、邏輯、位運算等,Numpy預設執行預編譯的C程式碼對逐個元素操作,如:

c = a * b

上式中,若a和b是形狀相同的多維陣列 ,或是一個標量和一個多維陣列,甚至是兩個不同形狀的陣列(較小陣列可通過某種方式擴充套件到較大陣列),Numpy對其均是逐個元素操作。這說明了Numpy的兩個特徵:向量化廣播。向量化指程式碼中無任何顯式的迴圈、索引等,這些事情在優化的、預編譯的C程式碼中完成。廣播指隱式地對元素逐個操作的術語。

陣列屬性

屬性 功能
ndarray.ndim 陣列的軸(維度)的個數
ndarray.shape 陣列的形狀,元組
ndarray.size 陣列元素的總數,等於shape中各元素的乘積
ndarray.dtype 描述陣列中元素型別的物件,可使用標準python資料型別建立
ndarray.itemsize 陣列中每個元素的位元組大小,如float64型別的陣列,它等於64/8=8
ndarray.data 該緩衝區包含陣列的實際元素,可使用索引替代,一般不直接使用
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0,  1,  2,  3
, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>> a.shape (3, 5) >>> a.ndim 2 >>> a.dtype.name 'int64' >>> a.itemsize 8 >>> a.size 15 >>> type(a) <type 'numpy.ndarray'> >>> b = np.array([6, 7, 8]) >>> b array([6, 7, 8]) >>> type(b) <type 'numpy.ndarray'>