numpy思維導圖
ndarray對象是什么
- NumPy 最重要的一個特點是其 N 維數組對象 ndarray,它是一系列同類型數據的集合,以 0 下標為開始進行集合中元素的索引。
- ndarray 對象是用於存放同類型元素的多維數組。
- ndarray 中的每個元素在內存中都有相同存儲大小的區域。
ndarray 內部由以下內容組成:
-
一個指向數據(內存或內存映射文件中的一塊數據)的指針。
-
數據類型或 dtype,描述在數組中的固定大小值的格子。
-
一個表示數組形狀(shape)的元組,表示各維度大小的元組。
-
一個跨度元組(stride),其中的整數指的是為了前進到當前維度下一個元素需要"跨過"的字節數。
創建數組的多種方式
- 創建數組(empty、zeros、ones、full、eye)
- 從已有的數組創建數組(asarray、frombuffer、fromiter)
- 從數值范圍創建數組(arange、linespace、logspace、random)
特性
- 切片、索引、高級索引
ndarray對象的內容可以通過索引或切片來訪問和修改,與 Python 中 list 的切片操作一樣。
切片是從原數組切出一個新的數組;索引是可以通過下標訪問數組。
高級索引是:整數數組索引、布爾索引、花式索引。
整數數組索引:見名知意,通過在x[]放入整數數組來表達要索引元素的下標,來檢索原數組。
例如:
# 整數數組索引 x = np.array([[1, 2], [3, 4], [5, 6]]) print(x, '\n') t = np.array([[0, 1, 2], [0, 1, 0]]) # 這里,我要獲取原數組中(0,0)、(1,1)、(2,0)位置的元素 print(t, '\n') y = x[[0, 1, 2], [0, 1, 0]] print(y, '\n')
# 輸出
[[1 2] [3 4] [5 6]] [[0 1 2] [0 1 0]] [1 4 5]
布爾索引:通過布爾運算(如:比較運算符)來獲取符合指定條件的元素的數組。
# # 布爾索引 x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]]) print(x) print(x[x > 5], '\n') # # 使用了 ~(取補運算符)來過濾 NaN。 a = np.array([np.nan, 1, 2, np.nan, 3, 4, 5]) print(a) print(a[~np.isnan(a)], '\n') # # 如何從數組中過濾掉非復數元素 a = np.array([1, 2+6j, 5, 3.5+5j]) print(a) print('非復數 :', a[~np.iscomplex(a)]) print('復數 :', a[np.iscomplex(a)], '\n')
# 輸出 [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] [ 6 7 8 9 10 11] [nan 1. 2. nan 3. 4. 5.] [1. 2. 3. 4. 5.] [1. +0.j 2. +6.j 5. +0.j 3.5+5.j] 非復數 : [1.+0.j 5.+0.j] 復數 : [2. +6.j 3.5+5.j]
花式索引:
- 廣播
豐富的函數