小白的机器学习实战——向量,矩阵和数组

简介: 创建矩阵import numpy as np# 创建矩阵matrix = np.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],
                   [10, 11, 12]])

向量

# 行向量
vector_row = np.array([1, 2, 3])
# 列向量
vector_column = np.array([[1],
                          [2],
                          [3]])

计算平均值,方差和标准偏差

# 计算均值
np.mean(matrix)
>>> 6.5
# 计算方差
np.var(matrix)
>>> 11.916666666666666
# 计算标准差
np.std(matrix)
>>> 3.4520525295346629

重塑矩阵

# 第二维可以为-1让程序自己推断,如matrix.reshape(2, -1)
matrix.reshape(2, 6)
>>> array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
    

矩阵加减法

# 创建矩阵a
matrix_a = np.array([[1, 1, 1],
                     [1, 1, 1],
                     [1, 1, 2]])

# 创建矩阵b
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]])

对矩阵元素进行操作

# 创建一个方法:对每个元素加10
add_100 = lambda i: i + 10

# 在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环。但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换.
vectorized_add_100 = np.vectorize(add_100)

# 最后将函数应用到矩阵上
vectorized_add_100(matrix)
>>> array([[11, 12, 13],
           [14, 15, 16],
           [17, 18, 19],
           [20, 21, 22]])

创建稀疏矩阵

# 创建一个矩阵,其中零元素远远多于非零元素
matrix = np.array([[0, 0],
                   [1, 0],
                   [0, 6]])
# 由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。
# 另外对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高,速度更快。
# python不能自动创建稀疏矩阵,所以要用scipy中特殊的命令来得到稀疏矩阵。
from scipy import sparse
matrix_sparse = sparse.csr_matrix(matrix)

描述一个矩阵

# 查看行和列
matrix.shape
>>> (4, 3)
# 查看所有元素个数(行*列)
matrix.size
>>> 12
# 查看维数
matrix.ndim
>>> 2

最大值和最小值

# 最大值
np.max(matrix)
>>> 12
# 最小值
np.min(matrix)
>>> 1
# 按列查找最大元素
np.max(matrix, axis=0)
>>> array([10, 11, 12])
# 按行查找最大元素
np.max(matrix, axis=1)
>>> array([3, 6, 9,12])

矩阵求逆

# 创建一个新矩阵
matrix_n = np.array([[1, 2],
                   [3, 4]])
# 计算逆矩阵
np.linalg.inv(matrix_n)
>>> array([[-2. ,  1. ],
       [ 1.5, -0.5]])

展平矩阵

matrix.flatten()
>>> array([1, 2, 3, 4, 5, 6, 7, 8, 9])

元素选择

# 对一个向量
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])

计算矩阵点乘(对应位置相乘之后再相加)

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

计算矩阵的行列式(The Determinant Of A Matrix)、矩阵的迹(The Trace Of A Matrix)和矩阵的秩(The Rank Of A Matrix)

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
# 行列式:行列式(Determinant)是数学中的一个函数,将一个 n*n的矩阵A映射到一个标量,记作det(A)或|A|
np.linalg.det(matrix)
>>> -9.5161973539299405e-16

# 迹:在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)。
# 先获得矩阵的对角线
matrix.diagonal()
>>> array([1, 5, 9])
# 对角线求和就是迹
matrix.diagonal().sum()
>>> 15
# 秩:在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。
np.linalg.matrix_rank(matrix)
>>> 2

矢量或矩阵转置

# 创建一个矢量
vector = np.array([1, 2, 3, 4, 5, 6])
# 转置
vector.T
>>> array([1, 2, 3, 4, 5, 6])

# 创建一个矩阵
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
# 转置
matrix.T
>>> array([[1, 4, 7],
          [2, 5, 8],
          [3, 6, 9]])

参考:https://chrisalbon.com/

目录
相关文章
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
91 0
|
3月前
|
机器学习/深度学习 数据采集 算法
机器学习实战:基于sklearn的工业蒸汽量预测
机器学习实战:基于sklearn的工业蒸汽量预测
59 0
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
【Python机器学习】K-Means对文本聚类和半环形数据聚类实战(附源码和数据集)
59 0
|
3月前
|
机器学习/深度学习 算法 TensorFlow
实战技术:如何使用Python进行机器学习建模
实战技术:如何使用Python进行机器学习建模
42 1
|
12天前
|
机器学习/深度学习 数据采集 算法
机器学习实战第3天:手写数字识别
机器学习实战第3天:手写数字识别
21 0
|
2月前
|
机器学习/深度学习 JavaScript Python
GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法(js和python代码)
GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法(js和python代码)
54 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
【1月更文挑战第26天】【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
|
4月前
|
机器学习/深度学习 算法 Python
【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)
【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)
254 1
|
4月前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
【Python机器学习】K-Means算法对人脸图像进行聚类实战(附源码和数据集)
93 0
|
4月前
|
机器学习/深度学习 算法 Python
【Python机器学习】感知器进行信用分类和使用KNN进行图书推荐实战(附源码和数据集)
【Python机器学习】感知器进行信用分类和使用KNN进行图书推荐实战(附源码和数据集)
103 0