機器學習(一) 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))] 就是排序後的陣列