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


1. mat()

mat()與array的區別:

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

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

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

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

clip_image001

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

clip_image002

(2) 把array轉換為mat

clip_image003

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

clip_image004

clip_image005

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

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

clip_image006

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

clip_image007

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

clip_image008

(5) **運算不一樣

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

clip_image009

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

clip_image010

2. list和array的區別

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

clip_image011

但是可以進行+運算,表示的是兩個列表的拼接:
clip_image012

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

clip_image013

clip_image014

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

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

clip_image015

clip_image016

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

clip_image017

clip_image018

4. random.uniform()方法

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

clip_image019

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的維度,即計算結果放在一個數組內

clip_image020

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為一個整數時

clip_image021

(2) 當n為list,tuple

clip_image022

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

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

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

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

clip_image023

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

clip_image024

7. argsort()方法

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

clip_image025

降序排序:

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

clip_image026

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

clip_image027

8. transpose( )方法

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

clip_image028

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的維度,即計算結果放在一個數組內

clip_image029

10. get()方法

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

clip_image030

11. operator.itemgetter ()

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

clip_image031

12. iteritems()

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

clip_image032

13. sorted() 方法

對list或者iterable進行排列

sorted(iterable, cmp, key, reverse)

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

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

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

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

clip_image033

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

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

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

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

order:排列的順序

clip_image034

      -  tany 2017年10月1日於杭州

人工智能從入門到專家教程資料:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.38270209gU11fS&id=562189023765


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM