Python之Numpy库学习(1)
Numpy简介
NumPy是一个功能强大的Python库, 主要用于对多维数组执行计算. NumPy这个词来源于两个单词– Numerical和Python. NumPy提供了大量的库函数和操作, 可以帮助程序员轻松地进行数值计算.
这类数值计算广泛用于以下任务:
- 机器学习模型: 在编写机器学习算法时, 需要对矩阵进行各种数值计算. 例如矩阵乘法, 换位, 加法等. NumPy提供了一个非常好的库, 用于简单(在编写代码方面)和快速(在速度方面)计算. NumPy数组用于存储训练数据和机器学习模型的参数.
- 图像处理和计算机图形学: 计算机中的图像表示为多维数字数组. NumPy成为同样情况下最自然的选择. 实际上, NumPy提供了一些优秀的库函数来快速处理图像. 例如: 镜像图像, 按特定角度旋转图像等.
- 数学任务: NumPy对于执行各种数学任务非常有用, 如数值积分, 微分, 内插, 外推等. 因此, 当涉及到数学任务时, 它形成了一种基于Python的MATLAB的快速替代.
NumPy库的安装
安装NumPy库的最快也是最简单的方法是在shell上使用以下命令:pip install numpy
一般使用时直接import即可import numpy as np
NumPy中的数组创建
tips: numpy中的数组叫做ndarry
可以使用np.array(n)直接定义数组
函数 | 说明 |
---|---|
np.array(n) | 返回和数组n相同的ndarry |
ndarry.shape | 返回或修改ndarry的形状 |
ndarry.size | 返回ndarry的size |
ndarry.type | 返回ndarry的type |
例如:
1 | >>>import numpy as np |
同时也可以使用以下方法创建数组:
函数 | 说明 |
---|---|
np.arange(n) | 创建值为0-n的一维数组 |
np.zeros(shape) | 创建形状为shape且值全为0的数组 |
np.zeros_like(a) | 创建形状和ndarry数组a相同且值全为0的数组 |
np.ones(shape) | 创建形状为shape且值全为1的数组 |
np.ones_like(a) | 创建形状和ndarry数组a相同且值全为0的数组 |
np.full(shape, val) | 创建形状为shape且值为val的数组 |
np.full_like(a, val) | 创建形状和ndarry数组a相同且值全为0的数组 |
np.eye(n) | 创建形状为n * n且对角线值为1其它位置值均为0的数组 |
例如:
1 | >>>import numpy as np |
除此之外,还有一些方法也能生成新的ndarry:
函数 | 说明 |
---|---|
np.linspace(start, stop, num=50, endpoint=True)) | 返回从start到stop之间num个数形成的ndarry, endpoint 决定是否包含stop |
np.contatenate((a1, a2…)) | 合并ndarry |
例如:
1 | >>>import numpy as np |
NumPy中数组的简单操作
可以使用基本的加减乘除对ndarry进行运算
例如:
1 | 1, 0], [0, 1]]) a = np.array([[ |
其中需要注意的是, 乘法运算符执行的是对位相乘而不是矩阵乘法.
要执行矩阵乘法, 可以使用a.dot(b)
1 | a.dot(b) |
ndarry数据规范化操作
获取数据类型:ndarry.dtype
更改数据类型:ndarry.astype(dtype)
保留有效数字:numpy.around(a, decimals=0)
- decimals: 保留decimals位小数, 可以为负数.
例如:
1 | import numpy as np |
ndarry中的矩阵操作
- 求矩阵的逆矩阵: np.linalg.inv(ndarry)
- 求矩阵的转置: ndarry.transpose() 或者 ndarry.T
- 求矩阵的行列式: np.linalg.det(ndarry)
- 求矩阵的特征向量和特征值: np.linalg.eig(ndarry)
- 求取线性方程组的解:
首先写出方程组的右边的y值向量: y=np.array([[y1],[y2],[y3]…])
函数值的集合等于 x=solve(ndarry, y) - 矩阵的乘法: np.dot(ndarry1,ndarry2)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 zzZ5的博客!
评论