人工智慧技術筆記

一、向量、矩陣和陣列

轉置矩陣或向量

# 載入庫import numpy as np# 建立向量vector = np。array([1, 2, 3, 4, 5, 6])# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 轉置向量vector。T# array([1, 2, 3, 4, 5, 6]) # 轉置矩陣matrix。T‘’‘array([[1, 4, 7], [2, 5, 8], [3, 6, 9]]) ’‘’

選擇陣列中的元素

# 載入庫import numpy as np# 建立行向量vector = np。array([1, 2, 3, 4, 5, 6])# 選擇第二個元素vector[1]# 2 # 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 選擇第二行第二列matrix[1,1]# 5 # 建立矩陣tensor = np。array([ [[[1, 1], [1, 1]], [[2, 2], [2, 2]]], [[[3, 3], [3, 3]], [[4, 4], [4, 4]]] ])# 選擇三個維度的每個的第二個元素tensor[1,1,1]# array([4, 4])

陣列變形

# 載入庫import numpy as np# 建立 4x3 矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])# 將矩陣變形為 2x6 矩陣matrix。reshape(2, 6)‘’‘array([[ 1, 2, 3, 4, 5, 6], [ 7, 8, 9, 10, 11, 12]]) ’‘’

矩陣的逆

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 4], [2, 5]])# 計算矩陣的逆np。linalg。inv(matrix)‘’‘array([[-1。66666667, 1。33333333], [ 0。66666667, -0。33333333]]) ’‘’

獲取矩陣對角線

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 返回對角線元素matrix。diagonal()# array([1, 5, 9]) # 建立矩陣的跡matrix。diagonal()。sum()# 15

展開矩陣

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 展開矩陣matrix。flatten()# array([1, 2, 3, 4, 5, 6, 7, 8, 9])

尋找矩陣的秩

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 返回矩陣的秩np。linalg。matrix_rank(matrix)# 2

Find The Maximum And Minimum

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 返回最大元素np。max(matrix)# 9 # 返回最小元素np。min(matrix)# 1 # 尋找每列的最大元素np。max(matrix, axis=0)# array([7, 8, 9]) # 尋找每行的最大元素np。max(matrix, axis=1)# array([3, 6, 9])

描述陣列

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])# 檢視行和列數matrix。shape# (3, 4) # 檢視元素數(行乘列)matrix。size# 12 # 檢視維數matrix。ndim# 2

建立向量

# 載入庫import numpy as np# 建立行向量vector_row = np。array([1, 2, 3])# 建立列向量vector_column = np。array([[1], [2], [3]])

建立稀疏矩陣

# Load librariesimport numpy as npfrom scipy import sparse# 建立矩陣matrix = np。array([[0, 0], [0, 1], [3, 0]])# 建立壓縮稀疏行(CSR)矩陣matrix_sparse = sparse。csr_matrix(matrix)

注意:有許多型別的稀疏矩陣。 在上面的示例中,我們使用 CSR,但我們使用的型別應該反映我們的用例。

建立矩陣

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 4], [2, 5]])

注意 NumPy 的

mat

資料結構對於我們的目的而言不太靈活,應該避免。

將字典轉換為矩陣

# 載入庫from sklearn。feature_extraction import DictVectorizer# 我們的資料字典data_dict = [{‘Red’: 2, ‘Blue’: 4}, {‘Red’: 4, ‘Blue’: 3}, {‘Red’: 1, ‘Yellow’: 2}, {‘Red’: 2, ‘Yellow’: 2}]# 建立 DictVectorizer 物件dictvectorizer = DictVectorizer(sparse=False)# 將字典轉換為特徵矩陣features = dictvectorizer。fit_transform(data_dict)# 檢視特徵矩陣features‘’‘array([[ 4。, 2。, 0。], [ 3。, 4。, 0。], [ 0。, 1。, 2。], [ 0。, 2。, 2。]]) ’‘’# 檢視特徵矩陣的列名dictvectorizer。get_feature_names()# [‘Blue’, ‘Red’, ‘Yellow’]

計算矩陣的跡

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 計算矩陣的跡matrix。diagonal()。sum()# 15

計算矩陣的行列式

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 返回矩陣的行列式np。linalg。det(matrix)# -9。5161973539299405e-16

計算均值、方差和標準差

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 返回均值np。mean(matrix)# 5。0 # 返回方差np。var(matrix)# 6。666666666666667 # 返回標準差np。std(matrix)# 2。5819888974716112

計算兩個向量的點積

# 載入庫import numpy as np# 建立兩個向量vector_a = np。array([1,2,3])vector_b = np。array([4,5,6])# 計算點積np。dot(vector_a, vector_b)# 32 # 計算點積vector_a @ vector_b# 32

對元素應用操作

# 載入庫import numpy as np# 建立矩陣matrix = np。array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 建立加上 100 的函式add_100 = lambda i: i + 100# 建立向量化函式vectorized_add_100 = np。vectorize(add_100)# 對矩陣的所有元素應用函式vectorized_add_100(matrix)‘’‘array([[101, 102, 103], [104, 105, 106], [107, 108, 109]]) ’‘’

矩陣的加和減

# 載入庫import numpy as np# 建立矩陣matrix_a = np。array([[1, 1, 1], [1, 1, 1], [1, 1, 2]])# 建立矩陣matrix_b = np。array([[1, 3, 1], [1, 3, 1], [1, 3, 8]])# 將兩個矩陣相加np。add(matrix_a, matrix_b)‘’‘array([[ 2, 4, 2], [ 2, 4, 2], [ 2, 4, 10]]) ’‘’# 將兩個矩陣相減np。subtract(matrix_a, matrix_b)‘’‘array([[ 0, -2, 0], [ 0, -2, 0], [ 0, -2, -6]]) ’‘’