numpy學習總結(重點講解索引方式)


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] 

 

      花式索引:

 

 

 

  • 廣播

 

豐富的函數


免責聲明!

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



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