numpy的安裝與簡單介紹
-
安裝numpy
使用pip
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
在文件中導入numpy
import numpy as np
np是numpy模塊的別名,儘管別名可以省略或更改,建議使用上述約定俗成的別名
-
numpy的N維數組對象:ndarray
Python已有列表類型,爲什麼需要一個數組對象(類型)?
例如: 計算 A^2 +B^3 ,其中,A和B是一維數組。
a = [0, 1, 2, 3, 4, ] b = [9, 8, 7, 6, 5, ] # 方法1 def py_sum(): c = [] for i in range(len(a)): c.append(a[i] ** 2 + b[i] ** 2) print(c) py_sum() #[81, 65, 53, 45, 41] #方法2 def np_sum(): global a global b a = np.array(a) b = np.array(b) c = a ** 2 + b ** 2 print(c) np_sum()#[81 65 53 45 41]
對比兩種方法:
方法2:
- 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據
- 設置專門的數組對象,經過優化,可以提升這類應用的運算速度
- 數組對象採用相同的數據類型,有助於節省運算和存儲空間
ndarray是一個多維數組對象,由兩部分構成
- 實際的數據
- 描述這些數據的原數據
ndarray對象的屬性
-
軸(axis):保存數據的維度;秩(rank):軸的數量
實例
# ndarray屬性 a = np.array( [[1, 2, 3, 4], [5, 6, 7, 8]] ) print(a.ndim) # 秩 2 print(a.shape) # 對象的尺度 n行m列 2行4列 (2,4) print(a.size) # 對象的個數 n*m 8 print(a.dtype) # 元素類型 int64 print(a.itemsize) # 每個元素的大小,以字節爲單位 8
ndarray爲什麼要支持這麼多種元素類型?
-
對比:Python語法僅支持整數、浮點數和複數3種類型
-
科學計算涉及數據較多,對存儲和性能都有較高要求
-
對元素類型精細定義,有助於NumPy合理使用存儲空間並優化性能
-
對元素類型精細定義,有助於程序員對程序規模有合理評估
-
非同質的ndarray對象:
a = np.array( [[1, 2, 3, 4], [5, 6, 7]] ) print(a.ndim) # 秩 1 print(a.shape) # 對象的尺度 n行m列 (2,) print(a.size) # 對象的個數 n*m 2 print(a.dtype) # 元素類型 object print(a.itemsize) # 每個元素的大小,以字節爲單位 8
-
非同質元素爲對象類型
-
非同質的情況下,數組的各種屬性已發生變化,與同質情況不同,不必去深究它。
-
非同質ndarray對象無法有效發揮NumPy優勢,儘量避免使用