1102 機器學習

DP前言筆記整理

這篇文章是學習時整理的一些筆記,讓自己複習時方便,文章內容為上課之內容整理

Introduction

  • Numpy是在科學計算裡面最常用的基本函式庫之一
  • 以C語言寫的模組,故處理速度快

使用前須import模組:

1
import numpy as np

Data Type

為了能進行高速運算,並確保計算時值的精度,有資料的「型別」(type)

int (signed)

  • int8 : 具有正負號的8位元整數
  • int16 : 具有正負號的16位元整數
  • int32 : 具有正負號的32位元整數
  • int64 : 具有正負號的64位元整數

uint (unsigned)

  • uint8 : 沒有正負號的8位元整數
  • uint16 : 沒有正負號的16位元整數
  • uint32 : 沒有正負號的32位元整數
  • uint64 : 沒有正負號的64位元整數

float

  • float16 : 16位元的浮點數
  • float32 : 32位元的浮點數
  • float64 : 64位元的浮點數

bool

表現True or False

基本用法

1
data = np.array([1, 2, 3, 4, 5])

查詢資料型別

1
data.type

查詢資料維度與數量

1
2
data.ndim
data.size

元素運算

常數乘法

1
data * 2 #data = [2, 4, 6, 8, 10]

陣列乘、除法

1
2
data * data #data = [1, 4, 9, 16, 25]
data / data #data = [1, 1, 1, 1, 1]

陣列連乘

1
data ** 2 #data = [1, 4, 9, 16, 25]

排序

sort 的預設排序是由小到大

1
2
3
data.sort()

data[::-1].sort() #若要是由大到小則可以使用切割來達成

最大、最小、總和等計算

1
2
3
4
5
6
7
data.max() #最大

data.min() # 最小

data.sum() # 總和

data.cumsum() #累積到該index前元素的總和

亂數

使用前須import模組:

1
import numpy.random as random
1
2
3
4
5
6
7
random.seed(x) #設定亂數種子為x

random.rand(x) #產生x個均勻分布(0.0以上、小於1.0)的亂數

random.randn(x) #產生x個常態分布(標準差為1、平均為0)的亂數

random.randint(x) #產生x個任意範圍且均勻分布的整數

隨機取出

1
2
3
random.choice(data, x) #隨機取出x個元素,且取後放回

random.choice(data, x, replace = False) #隨機取出x個元素,且取後不放回

矩陣

製作矩陣

1
2
3
4
5
6
7
8
9
10
11
array = np.arange(9) #產生0~8的連續整數
array1 = np.arange(9,18).reshape(3, 3) #產生9~17的連續整數

array2 = np.arange(9).reshape(3, 3) #產生0~8的連續整數後,將他重新排版成3行3列

np.zeros((2, 3), dtype = np.int64)) #產生所有元素為0的矩陣
np.ones((2, 3), dtype = np.float64)) #產生所有元素為1的矩陣

array2[0, :] #第一列

array2[:, 2] #第三行

矩陣運算

1
2
3
np.dot(array1, array2) #矩陣乘法

array1 * array2 #元素之積