1. 程式人生 > >機器學習(一) numpy的函式以及基本用法

機器學習(一) numpy的函式以及基本用法

新開一個篇章,記錄一下機器學習與資料科學的學習過程。

1.np.getnfromtxt

從txt檔案中讀資料,np.getnfromtxt('filename.txt', delimiter=',', dtype='...', skip_header=1)

2.np.array([1,2,3,...])生成ndarry陣列,布林陣列可以用來做索引

3.np.sum(axis = 1) 對行求和,np.sum(axis = 0) 對列求和

4.array.astype(float or int or ...) 把資料的儲存方式換成float 或 int 或。。。

5.np.arange(15) 生成一個一維的陣列,儲存十五個元素(0-14)

np.arange(begin, end, step) 生成一個一維陣列, 但是是等差數列,返回新陣列

array.reshape(row, col) 把陣列改變維度,返回新陣列

array.shape讀取陣列的維度

array.size讀取所有元素的個數

np.zeros((3,4)) np.ones((4,4))

例子:三維, np.ones((2,3,5), dtype = int.32)

6. array.ndim 讀取維度數,比如(3,4) 是2

7.np.random.random(n1,n2) 產生一個隨機數(-1,1) 同時生成維度為n1,n2的array。

8.np.linespace(begin, end, amount) 生成等距的amount個數,在begin 與end之間

9.矩陣乘法

A*B(對應元素相乘)

A.dot(B) (矩陣乘法)

np.dot(A,B) (同上,矩陣乘法)

10.常用函式(以簡寫a 代替 某一個array物件)

np.exp(array) 對array裡每個元素求它對應的e的多少次方

np.sqrt(array) 對每個元素開方

a.ravel() 把矩陣給拉成一維向量

a.shape = (n1, n2) 修改維度

a.reshape(row, col) 如果col == -1 or row == -1, 實際上是讓numpy去幫你計算,因為是確定的

np.floor(array) 向下取整

np.hstack((a,b)) 橫著拼接兩個陣列 -》 增加特徵

np.vstack((a,b)) 豎著拼接2個數組-》增加樣本

np.hsplit(a,3) 橫著切成3份,平均切

np.hsplit(a,(3,4)) 在index3 切一刀,index4 切一刀,一樣切成3份,但不是均勻地切,

同樣np.vsplit(就是切的方向不太一樣了)

11.np中複製的方法

a = np.arange(15)

I.    b = a(a和b指向同一塊記憶體)

II.   c = a.view() (不同記憶體,同樣內容)

這種情況下a和c的id是不一樣的,但是它們的值是公用的,所以對c作賦值會影響a

III. d = a.copy() (不同記憶體,不同內容,2者再無其他聯絡)

12.

如何提取每一行的最大值?

idx = a.argmax(axis = 0) 得到每一列的最大元素的行的idx

a[idx, range(a.shape[1])] 提取每一列的最大值,塞進一個一維陣列

13.

np.tile(a, (dim1, dim2)) 把以a為最小單位,返回一個以該最小單位為元素的dim1*dim2的矩陣

np.sort(a, axis=1)) 返回新矩陣,新矩陣的每行從小到大排列

a.sort(axis = 1)) 同上

np.argsort(a)) 返回一個數組,該陣列統計了正確排序後的idx

所以a[np.argsort(a))] 就是排序後的陣列