Numpy介紹與基礎知識
阿新 • • 發佈:2019-01-10
什麼是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'>