numpy方法彙總(切片,組合等)

一、numpy索引

1.1

布爾索引

row_index = (M[:,0] >= 20) & (M[:,0] <= 80)
col_index = M[0,:] >= 5
M[row_index,:][:,col_index]

注意:不能在同一個方括號中對列和行都使用布爾索引。新詞我們必須先在行方向上進行布爾選擇,然後重新打開方括號進行第二次選擇,這一次集中在列方向上選擇

如果需要對數組元素進行全局選擇,可以

mask = (M >= 20) & (M <= 90) & ((M / 10) % 1 >= 0.5)
M[mask]

 

1.2 花式索引

row_index = [1,1,2,7]
col_index = [0,2,4,8]
M[row_index,col_index] # 選出(1,0)(1,2)(2,4)(7,8)位置的元素
M[row_index,:][:,col_index] # 選出4行4列

注意:花式索引和普通步數切片索引,要牢記

 

1.3 普通索引

M[2:9:2,:]      # 第2至8行的偶數行
M[2:9:2,5:]     # 第2至8行的偶數行&第6列以後的數據
M[2:9:2,5::-1]  # 第2至8行的偶數行&第6列開始,逆序取值到第一列

注意:切片和索引只是數據的觀測,如果需要爲這些觀測創建新的數據則必須使用.copy()方法將切片數據賦給另一個變量,否則,對原數組的修改都將反映到切片數據上

也就是說,數組切片索引是原始數組的視圖,它與原始數組共享一個數據存儲空間,即數據不會被複制,視圖上的惹和修改會直接反映到原始數組

N = M[2:9:2,5:].copy()

二、numpy的屬性

shape、dtype、ndim、size、T、flat、nbyte

三、numpy函數

np.sort(s,axis=...):返回排序後的數組

np.argsort(s):返回數組排序後的下標(下標爲原未排序的下標)

np.lexsort():根據鍵值的字典序進行排序

s.reshape(1,2,3):維度改變

np.transpose(s):轉置=s.T

四、數組組合、分拆

np.hstack((a,b)):a,b水平組合=np.concatenate((a,b),axis=1),列數增加

np.vstack((a,c)):a,c豎直組合=np.concatenate((a,b),axis=0)類似於新增記錄,行數增加

深度組合、列組合、行組合見阮敬python數據分析基礎

np.hsplit(a,3):結果是列表,列表中第一個元素是分割後第一列的結果,=np.split(a,3,axis=1)

np.vsplit(a,3):結果是列表,列表中第一個元素是分割後第一行的結果,=np.split(a,3,axis=0)

五、ufunc運算

universal function是一種能對數組中每個元素進行操作的函數,使用outer關鍵字指定把函數返回結果存儲在指定數組

5.1 reduce、accumulate、reduceat、outer

 

np.add(a1,a2)

a1>a2

any(a1>a2)

all(a1>a2)

5.2 自定義ufunc函數

frompyfunc(func,n_in,n_out)

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章