Numpy最重要的一個特點就是其N維數組對象,即ndarray,該對象是一種快速而靈活的大數據集容器,實際開發中,我們可以利用這種數組對整塊數據執行一些數學運算。
有關ndarray,我們就從最簡單的一維數組操作以及其構造開始說起:
import numpy as np if __name__ == '__main__': print(1) #輸出一個字典對象i+rand print({i :np.random.rand() for i in range(2)}) #輸出字典對象i+list(rand) print({i: np.random.rand(2) for i in range(2)}) #在變量前面加一個?問號,可以將有關該對象的一些通用信息顯示出來 a=[] for i in range(3): #這里b就是一個有3個隨機小數的數組 b = np.random.rand(3) print(b.shape) print(b) a.append(b) print(a) #從管道中輸出a # print(a.pop(0)) # print(a) #通過array這個方法將a數組轉成nparray c=np.array(a) print("c============",c) #這里隨機獲取一個二維數組 d=np.empty((3,6)) print(d) #np的基本索引和切片 #先生成一個從0到10的一維數組[0 1 2 3 4 5 6 7 8 9] arr=np.arange(10) #針對這個np我們可以簡單切片,比如我要獲取5,6,7可以通過這個方法:arr[開始的index,結束的index],這里的index從0開始, #左包含右不包含 arr1=arr[5:8] print(arr1) #對一個切片進行賦值時,該值會傳播整個選取:比如arr[5:8]=12的輸出值就是[ 0 1 2 3 4 12 12 12 8 9] arr[5:8]=12 print(arr) #如果操作需要,我們可以針對切片中再一次進行切片賦值 arr_slice=arr[4:8] #[4,12,12,12] print(arr_slice[0]) #4 print(arr_slice[1]) # 12 arr_slice[0:2]=89 print(arr_slice) #[89 89 12 12] print(arr) #[ 0 1 2 3 89 89 12 12 8 9] #如果你想要得到的是ndarray切片的一份副本而不是視圖,就需要進行復制操作,比如 arrCopy=arr.copy() print(arrCopy)
當然,針對多元的數據更加需要多元的數組,比如二維數組,這里針對二維數組切片和索引進行簡單的講解:
#如果是多維數組,比如一個二維數組,我們操作可以如下,先生成一個2維數組:[[0 1 2][3 4 5][6 7 8]] x=[] for i in range(3): x1=np.arange(3*i,3*i+3) x.append(x1) arr2d=np.array(x) print(arr2d) #我們可以看看這個二維數組如何切片,有關切片索引 print(arr2d[1]) # [3 4 5] # 二維數組切片索引和一維稍微不同,以下兩個兩兩等價 print(arr2d[0:2]) # [[0 1 2][3 4 5]] print(arr2d[:2]) # [[0 1 2][3 4 5]] print(arr2d[2][0]) # 6 print(arr2d[2,:1]) #[6] print(arr2d[2,:2]) #[6 7] #更多維數組操作也類似上面一樣,舉一反三
更多維度的數組操作也類似上面,我們可以舉一反三,除了這一部分之外,還有布爾索引和花式索引
花式索引:花式索引是一個numpy術語,它指利用整數數組進行索引,例如,我們使用一個8*4的數組
#有關花式索引 #花式索引是一個numpy術語,它指利用整數數組進行索引,例如,我們使用一個8*4的數組 # arr=np.empty((8,4)) arr=np.arange(32).reshape((8,4)) print(arr) #以特定順序選取子集,這里選取的就是第5,4,1,7行的子數組 print(arr[[4,3,0,6]]) #如果我們使用負數索引,則選取的從末尾開始-1為最后一行,-2為倒數第二行 print(arr[[-1,-2]]) #這里輸出的分別是arr第5行的第一個數,第4行的第2個數,第1行的第3個數和第7行的第4個數組成的數組 print(arr[[4,3,0,6],[0,1,2,3]]) #這里輸出分別為arr第5,4,1,7行的第1,2,3個數組成的數組 #[[16 17 18] [12 13 14] [ 0 1 2] [24 25 26]] print(arr[[4,3,0,6]][:,[0,1,2]])