Numpy庫是支持 Python 語言的數值計算第三方庫,其擁有強大的多維數組處理與矩陣運算能力;是機器學習的必不可少的工具。本文是在學習了Numpy數值計算課程之後,做的些許筆記。
Numpy數組的索引與切片
數組索引
//一維數據索引
data[x] //索引一個數
data[[x,y,z]]//索引多個數
//二維數據索引
data[x,y]//索引一個數
data[[x1,x2],[y1,y2]]//索引兩個數
//三維數據索引
data[[x1,x2],[y1,y2],[z1,z2]]
數組切片
//一維數據的索引
Ndarray[start:stop:step] // 與python裏的list切片操作是一樣
//[start:stop:step] 分別代表 [起始索引:截至索引:步長]
//多維數據的索引,只需用逗號 , 分割不同維度
data[row1:row2,column1:column2] //二維數組切片,三維類似
Numpy數組排序、搜索及計數
//排序
numpy.sort(a, axis=-1, kind='quicksort', order=None)
//a:數組。
//axis:要排序的軸。如果爲None,則在排序之前將數組鋪平。默認值爲 -1,沿最後一個軸排序。
//kind:{'quicksort','mergesort','heapsort'},排序算法。默認值爲 quicksort。
示例:
a = np.random.randn(20).reshape(4, 5)
array([[-0.58130556, 0.14581941, 0.80553632, -1.87284741, -0.41056494],
[ 0.10856851, -0.66159494, 0.52620339, -0.15663751, 0.23842936],
[ 0.24581893, 0.85822414, 1.96948944, -0.33772201, 0.19478995],
[-1.18558649, -0.88364367, -0.80021437, -1.27308585, -0.61206656]])
結果:
np.sort(a)
array([[-1.87284741, -0.58130556, -0.41056494, 0.14581941, 0.80553632],
[-0.66159494, -0.15663751, 0.10856851, 0.23842936, 0.52620339],
[-0.33772201, 0.19478995, 0.24581893, 0.85822414, 1.96948944],
[-1.27308585, -1.18558649, -0.88364367, -0.80021437, -0.61206656]])
//其他方法
//numpy.lexsort(keys ,axis):使用多個鍵進行間接排序。
//numpy.argsort(a ,axis,kind,order):沿給定軸執行間接排序。
//numpy.msort(a):沿第 1 個軸排序。
//numpy.sort_complex(a):針對複數排序。
//搜索和計數
argmax(a ,axis,out):返回數組中指定軸的最大值的索引。
nanargmax(a ,axis):返回數組中指定軸的最大值的索引,忽略 NaN。
argmin(a ,axis,out):返回數組中指定軸的最小值的索引。
nanargmin(a ,axis):返回數組中指定軸的最小值的索引,忽略 NaN。
argwhere(a):返回數組中非 0 元素的索引,按元素分組。
nonzero(a):返回數組中非 0 元素的索引。
flatnonzero(a):返回數組中非 0 元素的索引,並鋪平。
where(條件,x,y):根據指定條件,從指定行、列返回元素。
searchsorted(a,v ,side,sorter):查找要插入元素以維持順序的索引。
extract(condition,arr):返回滿足某些條件的數組的元素。
count_nonzero(a):計算數組中非 0 元素的數量。