numpy模塊內置的函數可以對數組進行復雜而高效的操做,這些函數中都有一個參數axis(軸)。在數組中,軸表示維度,對於二維數組,axis參數的取值一般有:html
sort(axis,kind)函數用於對數組進行排序,可使用類方法numpy.sort(),返回的是數組的已排序的副本,而原始數組並無改變;也可使用對象方法obj.sort(),原始數組排序。git
numpy.sort(a, axis=1, kind='quicksort')
參數註釋:算法
舉個例子,對數組進行排序:數組
import numpy as np a = np.array([[1, 2, 1] ,[1,1,0]]) r1=np.sort(a) r2=np.sort(a,axis=0) r3=np.sort(a,axis=1) print('a.sort() = {0}\na.sort(axis=0) = {1}\na.sort(axis=1) ={2}'.format(r1,r2,r3))
argsort()函數返回的是按照數組值從小到大的索引值,即返回的是索引值,索引值是按照元素值從小到大獲得的。dom
x=np.array([1,4,3,-1,6,9]) y=np.argsort(x) #output array([3, 0, 2, 1, 4, 5], dtype=int64)
元素-1的值是最小的,其索引是3,所以,argsort()的返回列表中是第一個item。函數
argsort()函數是將x中的元素從小到大排列,提取其對應的index(索引),而後輸出到y,按照降序排序:ui
y=np.argsort(-x)
按照升序排序:spa
y=np.argsort(x)
numpy.vectorize()函數定義一個向量化函數,它以序列或numpy數組做爲輸入,對numpy數組作向量化操做。函數輸出的數據類型是由otypes參數肯定的,若是otypes=None,那麼輸出的數據類型是經過使用輸入的第一個元素調用函數來肯定的,該函數返回一個函數對象。code
numpy.vectorize(pyfunc, otypes=None, doc=None, excluded=None, cache=False, signature=None)
參數註釋:orm
使用vectorize()定義一個向量化函數,對數組作向量化操做:
def myfunc(a, b): return a-b if a>b else a+b vfunc = np.vectorize(myfunc) vfunc([1, 2, 3, 4], 2) #output array([3, 4, 1, 2])
reshap(array,newshape) :返回一個給定shape的數組的副本,例如,下面的代碼把一個一維數組轉換爲4行2列的二位數組:
a=np.arange(8) np.reshape(a,(4,2))
返回展平數組,原數組不改變
a=np.arange(8) b=np.reshape(a,(4,2)) b.flatten()
numpy計算元素的和/積,在語法上類似。
1,求和
numpy對象的函數:sum(axis)
參數axis是軸,對於二維數組,axis的取值有None、0和1:
舉個例子,建立一個二維數組,按照行和列分別求和:
import numpy as np a = np.array([[0, 2, 1] ,[0,1,0]]) r1=a.sum() r2=a.sum(axis=0) r3=a.sum(axis=1) print('a.sum() = {0}\na.sum(axis=0) = {1}\na.sum(axis=1) ={2}'.format(r1,r2,r3))
2,求積
計算元素的積:prod(axis)
參數axis是軸,對於二維數組,axis的取值有None、0和1:
舉個例子,建立一個二維數組,按照行和列分別求乘積:
import numpy as np a = np.array([[1, 2, 1] ,[1,1,0]]) r1=a.prod() r2=a.prod(axis=0) r3=a.prod(axis=1) print('a.prod() = {0}\na.prod(axis=0) = {1}\na.prod(axis=1) ={2}'.format(r1,r2,r3))
對numpy對象計算,經常使用的統計量是:
舉個例子,計算數組的均值:
import numpy as np a = np.array([[1, 2, 1] ,[1,1,0]]) r1=a.mean() r2=a.mean(axis=0) r3=a.mean(axis=1) print('a.mean() = {0}\na.mean(axis=0) = {1}\na.mean(axis=1) ={2}'.format(r1,r2,r3))
計算數組中最大值和最小值的索引:
舉個例子,返回數組中最小值的索引:
import numpy as np a = np.array([[1, 2, 1] ,[1,1,0]]) r1=a.argmin() r2=a.argmin(axis=0) r3=a.argmin(axis=1) print('a.argmin() = {0}\na.argmin(axis=0) = {1}\na.argmin(axis=1) ={2}'.format(r1,r2,r3))
使用 numpy.linspace() 建立等差數列函數
numpy.linspace(start, stop[, num=50[, endpoint=True[, retstep=False[, dtype=None]]]]])
返回在指定範圍內的均勻間隔的數字(組成的數組):
>>> import numpy as np >>> np.linspace(-3,3,11) array([-3. , -2.4, -1.8, -1.2, -0.6, 0. , 0.6, 1.2, 1.8, 2.4, 3. ])
按照bins(順序)分箱數組,把數據點劃分到不一樣的分箱中,並返回分箱的索引:
numpy.digitize(data,bins)
numpy.random模塊是對Python內置的random的升級,增長了一些用於搞笑生成多種機率分佈的樣本值的函數。
經常使用的numpy.random模塊的函數:
例如,使用normal獲得一個標準正態分佈的4x4樣本數組:
samples=np.random.normal(size=(4,4))
參考文檔: