1. 程式人生 > >機器學習之numpy庫中常用的函數介紹(一)

機器學習之numpy庫中常用的函數介紹(一)

做的 string idt 維度 數據 round float 數值 array

1. mat()

mat()與array的區別:

mat是矩陣,數據必須是2維的,是array的子集,包含array的所有特性,所做的運算都是針對矩陣來進行的。

array是數組,數據可以是多維的,所做的運算都是針對數組來進行的

(1) 數據能表示的維度不同,array數據可以是多維的,mat的數據必須是2維的。

array能表示超過2維的數據,而mat不能:

技術分享

對於2維的數據,array和mat的表示形式完全一樣(但運算不一樣):

技術分享

(2) 把array轉換為mat

技術分享

(3) matrix 和 array 都可以通過objects後面加.T 得到其轉置。但是matrix objects 還可以在後面加 .H 得到共軛矩陣, 加 .I 得到逆矩陣。

技術分享

技術分享

(4) array遵從逐個元素的運算,array的類型的a和b的a*b的運算,相當與MATLAB中的a.*b的運算。

數組a,b的點乘乘法運算a*b (逐個元素的運算):

技術分享

數組a,b的矩陣乘法運算:

技術分享

相當於矩陣A,B的矩陣乘法運算:

技術分享

(5) **運算不一樣

對於array a,a**2運算相當於對於a的元素逐個求平方:

技術分享

對於mat a,a**2運算相當於矩陣相乘a*a:

技術分享

2. list和array的區別

(1) list是python的內置數據類型,list中的數據類型不必相同,主要用來作索性,可以通過索引查找數值,但不能對整個列表進行數值運算

技術分享

但是可以進行+運算,表示的是兩個列表的拼接:
技術分享

(2) array的中的類型必須全部相同(同屬於int,float,duoble)才能進行數組間的運算,否則也只能作索引:

技術分享

技術分享

3. shape() 讀取矩陣的各個維度的長度

(1)shape() 返回的是各個維度的長度的列表:

技術分享

技術分享

(2)shape[n ]表示獲取第n個維度的長度

技術分享

技術分享

4. random.uniform()方法

uniform(x,y): 隨機產生一個在[x, y]範圍內的實數,返回一個浮點數。

技術分享

5. mean()方法

mean()方法為求平均值的方法:

mean(a, axis=None, dtype=None, out=None, skipna=False, keepdims=False)

a: 輸入的數組,array類型

axis: None:計算數組中的所有值的平均值

=0:以列為單位計算數組中每一列的所有值的平均值;

=1:以行為單位計算數組中每一行的所有值的平均值

dtype: 為指定數組中的元素的類型,默認為float64

out: 如果提供,則為計算的輸出結果保存的數組,大小要和輸出結果的數組大小相同

skipna: 如果設置為true,則計算時跳過為NA的值

keepdims: 如果設置為true,輸出結果將保持為1的維度,即計算結果放在一個數組內

技術分享

6. tile() 方法

tile英文單詞意思:拼貼。tile(A, n)功能:將數組A重復n次,構成一個新的數組。

A的類型:array, list, tuple, dict, matrix,int, string, float,bool

n的類型: tuple,list, dict, array, int,bool,不可以是float, string, matrix

(1) 當n為一個整數時

技術分享

(2) 當n為list,tuple

技術分享

(3) 當A的維度 < n的長度時

tile(A, n)將A中的所有元素作為單元,按n變成一個新的數組,以上為例子。

(4) 當A的維度 > n的長度時

n的長度不足為A的維度,即在n的前面加上(A的維度-n的長度),變成與A的維度相同的長度,再進行重復:

技術分享

以上的a的維度為2,n的長度為1,n自動補充為[2-1, 3] =[1, 3], 與以下等效:

技術分享

7. argsort()方法

argsort(a):對數組或元組a進行升序排序, 返回的是升序之後的各個元素在原來a未升序之前的下標,即返回升序之後對應的下標數組。

技術分享

降序排序:

(1) 獲取升序排列之後的最後一個下標

技術分享

(2) 或者使用argsort(-a)進行降序排列,其中a只能是含相同數據類型的數組,不能是列表

技術分享

8. transpose( )方法

裝置,可以裝置任何類型mat,list,array,當類=類型為mat的時候,等同於A.T

技術分享

9. sum

sum(a, axis=None, dtype=None, out=None, skipna=False, keepdims=False)

a: 輸入的數組,array類型

axis: None:計算數組中的所有值的和

=0:以列為單位計算數組中每一列的所有值的和;

=1:以行為單位計算數組中每一行的所有值的和

dtype: 為指定數組中的元素的類型,默認為float64

out: 如果提供,則為計算的輸出結果保存的數組,大小要和輸出結果的數組大小相同

skipna: 如果設置為true,則計算時跳過為NA的值

keepdims: 如果設置為true,輸出結果將保持為1的維度,即計算結果放在一個數組內

技術分享

10. get()方法

dict.get(key, default=None) key -- 字典中要查找的鍵。default -- 如果指定鍵的值不存在時,返回該默認值。

技術分享

11. operator.itemgetter ()

operator.itemgetter(n)定義了一個用來獲取對象第n個域數據的函數。

技術分享

12. iteritems()

返回字典的一個叠代器。返回一個可以調用的對象(可以從操作對象中提取item)

技術分享

13. sorted() 方法

對list或者iterable進行排列

sorted(iterable, cmp, key, reverse)

iterable指定要排序的list或者iterable,

cmp為函數,指定排序時進行比較的函數,可以指定一個函數或者lambda函數,

key為函數,指定取待排序元素的哪一個域進行排序,

reverse默認為false(升序排列),定義為True時將按降序排列。

技術分享

與sort區別的是,sort會改變原來對象的順序:

ndarray.sort(axis=-1, kind=‘quicksort‘, order=None)

axis:排序的維度,0表示按行,1表示按列

kind:排序的算法,提供了快排、混排、堆排:’quicksort’, ‘mergesort’, ‘heapsort’

order:排列的順序

技術分享

機器學習之numpy庫中常用的函數介紹(一)