系列文章目录
第一章 Python 机器学习入门之Pandas库的使用
第二章 Python 机器学习入门之NumPy库的使用
第二章 Python 机器学习入门之Series和DataFrame的创建、索引、切片、数据清洗、数据分析等
第二章 Python 机器学习入门之数据可视化
第二章 Python 机器学习入门之机器学习算法
第二章 Python 机器学习入门之实战项目
文章目录
前言
NumPy是Python中一个重要的科学计算库,它提供了高效的多维数组对象和各种数学函数,可以方便地进行向量化计算和数组操作。在机器学习中,NumPy常常被用来进行数据处理和预处理,为后续的模型训练和评估做好准备。本文将介绍NumPy库的基本操作和方法,包括数组的创建和操作、常用函数、广播机制、随机数生成、文件操作、线性代数运算等。希望能够帮助读者更好地掌握NumPy的使用方法,为机器学习和数据分析提供帮助。
一、NumPy库简介
NumPy是Python中一个重要的科学计算库,它提供了高效的多维数组对象和各种数学函数,可以方便地进行向量化计算和数组操作。NumPy的主要功能包括数组的创建和操作、数组的统计和计算、数组的排序和搜索、随机数生成、文件操作、线性代数运算等。
NumPy库的作用
NumPy库的主要作用是提供高效的多维数组对象和各种数学函数,可以方便地进行向量化计算和数组操作。NumPy的数组对象可以存储任意类型的数据,包括整数、浮点数、复数、布尔值等,可以进行基本的数学运算、逻辑运算、比较运算等。
NumPy库的安装
在安装NumPy库之前,需要先安装Python环境。可以通过以下命令安装NumPy库:
复制pip install numpy
二、NumPy数组的创建和操作
NumPy数组是NumPy库中最重要的数据结构,它是一个多维数组对象,可以存储任意类型的数据。NumPy数组的创建和操作包括以下几个方面:
创建NumPy数组
可以使用NumPy库的array()函数创建NumPy数组,也可以使用其他函数创建特定类型的数组,如zeros()函数创建全零数组、ones()函数创建全一数组、empty()函数创建空数组等。
NumPy数组的属性
NumPy数组的属性包括数组的形状、数据类型、维度、元素个数等。可以使用shape属性获取数组的形状、dtype属性获取数组的数据类型、ndim属性获取数组的维度、size属性获取数组的元素个数等。
NumPy数组的索引和切片
NumPy数组的索引和切片与Python列表类似,可以使用整数索引、切片、布尔索引等方式获取数组的元素。可以使用冒号(:)表示切片范围,可以使用布尔数组表示条件索引。
NumPy数组的运算
NumPy数组支持基本的数学运算、逻辑运算、比较运算等,可以使用NumPy库中的各种函数进行数组运算。NumPy数组的运算包括元素级运算、矩阵运算、广播运算等。
import numpy as np
# 创建一维数组
a = np.array([1, 2, 3])
print(a)
# 创建二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 创建全零数组
c = np.zeros((2, 3))
print(c)
# 创建全一数组
d = np.ones((2, 3))
print(d)
# 创建空数组
e = np.empty((2,
三、NumPy的常用函数
NumPy库提供了丰富的函数和方法,可以方便地进行数组形状操作、数组元素操作、数组统计计算、数组排序和搜索等。常用的函数包括以下几个方面:
数组形状操作函数
数组形状操作函数包括reshape()函数、flatten()函数、transpose()函数、swapaxes()函数等,可以方便地改变数组的形状和维度。
数组元素操作函数
数组元素操作函数包括sum()函数、mean()函数、std()函数、var()函数等,可以方便地进行数组元素的统计计算。
数组统计函数
数组统计函数包括min()函数、max()函数、argmin()函数、argmax()函数等,可以方便地进行数组元素的统计计算和查找。
数组排序函数
数组排序函数包括sort()函数、argsort()函数、lexsort()函数、searchsorted()函数等,可以方便地进行数组元素的排序和搜索。
数组形状操作函数
数组形状操作函数包括reshape()函数、flatten()函数、transpose()函数、swapaxes()函数等,可以方便地改变数组的形状和维度。
复制import numpy as np
# reshape函数改变数组形状
a = np.array([[1, 2], [3, 4], [5, 6]])
b = a.reshape((2, 3))
print(b)
# flatten函数将多维数组转换为一维数组
c = np.array([[1, 2], [3, 4], [5, 6]])
d = c.flatten()
print(d)
# transpose函数将数组进行转置
e = np.array([[1, 2], [3, 4], [5, 6]])
f = e.transpose()
print(f)
# swapaxes函数交换数组的两个轴
g = np.array([[1, 2], [3, 4], [5, 6]])
h = np.swapaxes(g, 0, 1)
print(h)
数组元素操作函数
数组元素操作函数包括sum()函数、mean()函数、std()函数、var()函数等,可以方便地进行数组元素的统计计算。
# sum函数计算数组元素的和
a = np.array([1, 2, 3])
b = np.sum(a)
print(b)
# mean函数计算数组元素的平均值
c = np.array([1, 2, 3])
d = np.mean(c)
print(d)
# std函数计算数组元素的标准差
e = np.array([1, 2, 3])
f = np.std(e)
print(f)
# var函数计算数组元素的方差
g = np.array([1, 2, 3])
h = np.var(g)
print(h)
数组统计函数
数组统计函数包括min()函数、max()函数、argmin()函数、argmax()函数等,可以方便地进行数组元素的统计计算和查找。
复制import numpy as np
# min函数计算数组元素的最小值
a = np.array([1, 2, 3])
b = np.min(a)
print(b)
# max函数计算数组元素的最大值
c = np.array([1, 2, 3])
d = np.max(c)
print(d)
# argmin函数查找数组元素的最小值的索引
e = np.array([1, 2, 3])
f = np.argmin(e)
print(f)
# argmax函数查找数组元素的最大值的索引
g = np.array([1, 2, 3])
h = np.argmax(g)
print(h)
数组排序函数
数组排序函数包括sort()函数、argsort()函数、lexsort()函数、searchsorted()函数等,可以方便地进行数组元素的排序和搜索。
复制import numpy as np
# sort函数对数组元素进行排序
a = np.array([3, 1, 2])
b = np.sort(a)
print(b)
# argsort函数返回数组元素排序后的索引
c = np.array([3, 1, 2])
d = np.argsort(c)
print(d)
# lexsort函数对多个数组进行排序
e = np.array([3, 1, 2])
f = np.array([1, 2, 3])
g = np.lexsort((e, f))
print(g)
# searchsorted函数在有序数组中查找元素的插入位置
h = np.array([1, 2, 3])
i = np.searchsorted(h, 2)
print
四、NumPy的广播机制
广播机制是NumPy中一个非常重要的特性,它可以使不同形状的数组进行运算,而不需要进行显式的形状转换。广播机制的应用可以大大简化数组运算的代码,提高代码的效率。
广播机制的概念
广播机制是指NumPy在进行数组运算时,自动将不同形状的数组进行扩展,使它们具有相同的形状,然后进行运算。广播机制的规则包括两个方面:首先,NumPy会比较两个数组的形状,从末尾开始逐一比较,如果两个数组的形状相同或其中一个数组的形状为1,则认为它们可以进行广播;其次,NumPy会将形状为1的数组自动扩展为与另一个数组相同的形状。
广播机制的应用
广播机制的应用包括数组的加减乘除、数组的比较运算、数组的逻辑运算等。在进行数组运算时,可以使用广播机制简化代码,提高代码的效率。
五、NumPy的随机数生成
NumPy库提供了丰富的随机数生成函数,可以方便地生成各种类型的随机数。随机数生成函数包括以下几个方面:
随机数生成函数
随机数生成函数包括rand()函数、randn()函数、randint()函数、uniform()函数、normal()函数等,可以方便地生成各种类型的随机数。
NumPy库提供了多种随机数生成函数,包括生成随机整数、生成随机浮点数、生成随机数组等。这些函数可以方便地生成符合特定分布的随机数,为模拟和实验提供帮助。
import numpy as np
# randint函数生成指定范围内的随机整数
a = np.random.randint(0, 10, size=(3, 3))
print(a)
生成随机整数
可以使用NumPy库的random.randint()函数生成指定范围内的随机整数。
生成随机浮点数
可以使用NumPy库的random.rand()函数生成指定形状的随机浮点数,也可以使用random.randn()函数生成符合标准正态分布的随机浮点数。
随机数种子
随机数种子是指随机数生成器的初始状态,可以通过设置随机数种子来控制随机数的生成。可以使用NumPy库的random.seed()函数设置随机数种子。
import numpy as np
# rand函数生成指定形状的随机浮点数
a = np.random.rand(3, 3)
print(a)
# randn函数生成符合标准正态分布的随机浮点数
b = np.random.randn(3, 3)
print(b)
生成随机种子
可以使用NumPy库的random.seed()函数生成随机种子,用于控制随机数的生成。
import numpy as np
# seed函数生成随机种子
np.random.seed(0)
a = np.random.rand(3, 3)
print(a)
六、NumPy的文件操作
NumPy库提供了丰富的文件操作函数,可以方便地读取和写入各种类型的文件。文件操作函数包括以下几个方面:
读取文本文件
可以使用NumPy库的loadtxt()函数、genfromtxt()函数、fromfile()函数等读取文本文件中的数据。
import numpy as np
# 从CSV文件中读取数组数据
a = np.genfromtxt('data.csv', delimiter=',')
print(a)
# 将数组数据保存到CSV文件中
b = np.array([[1, 2], [3, 4]])
np.savetxt('data.csv', b, delimiter=',')
读取二进制文件
可以使用NumPy库的load()函数、loadtxt()函数、fromfile()函数等读取二进制文件中的数据。
import numpy as np
# 保存数组数据到文件中
a = np.array([[1, 2], [3, 4]])
np.save('data.npy', a)
# 从文件中读取数组数据
b = np.load('data.npy')
print(b)
写入文本文件
可以使用NumPy库的savetxt()函数、tofile()函数等将数据写入文本文件。
import numpy as np
# 保存数组数据到文本文件中
a = np.array([[1, 2], [3, 4]])
np.savetxt('data.txt', a)
# 从文本文件中读取数组数据
b = np.loadtxt('data.txt')
print(b)
写入二进制文件
可以使用NumPy库的save()函数、savez()函数等将数据写入二进制文件。
七、NumPy的线性代数运算
NumPy库提供了丰富的线性代数运算函数,可以方便地进行矩阵的创建、矩阵的运算、矩阵的分解等。线性代数运算函数包括以下几个方面:
NumPy库提供了多种线性代数运算函数,包括矩阵乘法、矩阵求逆、矩阵行列式、特征值和特征向量等。这些函数可以方便地进行线性代数运算,为数据分析和模型训练提供帮助。
矩阵乘法
可以使用NumPy库的dot()函数进行矩阵乘法运算。
import numpy as np
# 矩阵乘法运算
def matrix_multiply(a, b):
c = np.dot(a, b)
return c
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = matrix_multiply(a, b)
print(c)
矩阵的创建和操作
可以使用NumPy库的mat()函数、array()函数等创建矩阵对象,可以使用T属性、H属性等进行矩阵的转置、共轭等操作。
矩阵求逆
可以使用NumPy库的inv()函数求解矩阵的逆矩阵。
import numpy as np
# 求解矩阵的逆矩阵
def matrix_inverse(a):
b = np.linalg.inv(a)
return b
a = np.array([[1, 2], [3, 4]])
b = matrix_inverse(a)
print(b)
矩阵的运算
可以使用NumPy库的dot()函数、multiply()函数、inv()函数、solve()函数等进行矩阵的乘法、元素级乘法、矩阵求逆、矩阵求解等运算。
矩阵的分解
可以使用NumPy库的eig()函数、svd()函数、qr()函数等进行矩阵的特征值分解、奇异值分解、QR分解等。矩阵行列式
可以使用NumPy库的det()函数计算矩阵的行列式。
import numpy as np
# 计算矩阵的行列式
def matrix_determinant(a):
b = np.linalg.det(a)
return b
a = np.array([[1, 2], [3, 4]])
b = matrix_determinant(a)
print(b)
八、总结和展望
NumPy库是Python中一个非常重要的科学计算库,它提供了高效的多维数组对象和各种数学函数,可以方便地进行向量化计算和数组操作。本文介绍了NumPy库的基本操作和方法,包括数组的创建和操作、常用函数、广播机制、随机数生成、文件操作、线性代数运算等。NumPy库的优势在于它提供了高效的数组操作和数学函数,可以方便地进行科学计算和数据分析。未来,随着数据科学和人工智能的发展,NumPy库的应用前景将更加广阔。
网盘分享
Python从入门到精通之30天快速学Python视频教程
链接:https://pan.baidu.com/s/19FeaVPN_F0scxYR24e1MCg?pwd=c8qz
提取码:c8qz