機器學習之numpy庫中常用的函數介紹(一)
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庫中常用的函數介紹(一)