1、Numpy
模块
NumPy
是Python中的一个运算速度非常快的一个数学库,它非常重视数组。它允许你在Python中进行向量和矩阵计算,并且由于许多底层函数实际上是用C编写的,因此你可以体验在原生Python中永远无法体验到的速度。
- 机器学习模型:在编写机器学习算法时,需要对矩阵进行各种数值计算。例如矩阵乘法、换位、加法等。
NumPy
提供了一个非常好的库,用于简单(在编写代码方面)和快速(在速度方面)计算。NumPy
数组用于存储训练数据和机器学习模型的参数。 - 图像处理和计算机图形学:计算机中的图像表示为多维数字数组。
NumPy
成为同样情况下最自然的选择。实际上,NumPy
提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。 - 数学任务:
NumPy
对于执行各种数学任务非常有用,如数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于Python的MATLAB
的快速替代。
由于是第三方模块,所以要进行下载: pip insatll numpy
数组基础
numpy
主要就是围绕着数组进行展开;主要用于矢量和矩阵、线性代数等数学运算
import numpy
my_array = numpy.array([1,2,3,4,5])
print(my_array)
# 生成数组
[1 2 3 4 5]
# my_array 是一个包含5个元素的数组。
print(my_array.shape) # (5, ) # 数组的尺寸, 几行几列
# 打印各个元素
print(my_array[0]) # 1
# 修改数组元素
my_array[0] = -1
print(my_array)
# 快捷创建就是
my_array = numpy.arange(10)
print(my_array)
# 输出为:[0 1 2 3 4 5 6 7 8 9] 注意: arange有点类似于Python中的range,都是顾头不顾尾
二维数组的创建
import numpy
array = numpy.arange(10).reshape(5,2) # reshape值得是重塑函数
print(array)
# 输出为:
[[0 1]
[2 3]
[4 5]
[6 7]
[8 9]]
此处: # reshape(5,2)的意思就是5代表的是数组的列数,2代表的是每个单独数组的元素为2个
三维数组的创建
import numpy
array = numpy.arange(27).reshape(3,3,3)
print(array)
# 注意: 数组中的元素数量27必须是尺寸3*3*3的积
# 输出为
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
[[ 9 10 11]
[12 13 14]
[15 16 17]]
[[18 19 20]
[21 22 23]
[24 25 26]]]
dot()
-
除了 dot() 之外,这些操作符都是对数组进行逐元素运算。比如 (a, b, c) + (d, e, f) 的结果就是 (a+d, b+e, c+f)。它将分别对每一个元素进行配对,然后对它们进行运算。它返回的结果是一个数组。注意,当使用逻辑运算符比如 “<” 和 “>” 的时候,返回的将是一个布尔型数组,这点有一个很好的用处,后边我们会提到。
dot() 函数计算两个数组的点积。它返回的是一个标量(只有大小没有方向的一个值)而不是数组。
#它背后的一些数学知识
dot()函数称为点积。理解这一点的最好方法是看下图,下图将表示它是如何进行计算的。
-
我们使用
dot
函数来计算向量的内积,将向量乘以矩阵,并乘以矩阵。dot
既可以作为numpy模块中的函数,也可以作为数组对象的实例方法: -
import numpy as np x = np.array([[1,2],[3,4]]) y = np.array([[5,6],[7,8]]) v = np.array([9,10]) w = np.array([11, 12]) print(v.dot(w)) print(np.dot(v, w)) print(x.dot(v)) print(np.dot(x, v)) # [[19 22] # [43 50]] print(x.dot(y)) print(np.dot(x, y)) 计算两个向量之间的点积