前言
随着人工智能的不断发展,机器学习这门技术也越来越重要,因此,虽然很想直接上手牛逼哄哄的 cv/nlp,但还什么都不太懂的底层码农,还是需要从基础知识开始学起。本文就是一位萌新码农对 numpy 基础的一个总结。
一、numpy是什么?
简单来说,numpy (Numeric Python)是python中能够简便数值计算的一个库,能够存储并处理大型矩阵,而且效率也比python原装的嵌套列表结构要高很多。
二、numpy数组
1.创建数组
(1) array 函数
代码如下:
凡事由简入繁,这里向array中传入一个list来实现一维数组的创建。
直接就是同理可得,二维数组的创建实际与一维数组也没有太大差别,向array中传入一个list的list
创建一个三维数组,属于是套娃了,传入一个list的list的list……
(2) full 函数
可以自行定义数组形状,并且数组内元素均为同一值。
特殊化的,有创建数组元素全为 1 或 0 的 函数
补充:数组输出中有点的原因是dtype的默认属性为float,如果将其改成int,则数字右下角的点都会没有。
但是出于某种原因(可能是程序员偷懒),数组元素全是 2 的函数(twos)就没有,也可能是0/1可以享受二进制的特殊待遇。
错误原因就可以看出,numpy里面没有twos这个函数。
(3) empty 函数
效果上,不能说与ones非常相近,只能说是完全一样 。
(4) eye 函数
用 eye 函数可以设置矩阵的长与宽,并且生成单位矩阵。
(5) linspace 函数
通过 linspace 函数,可以实现恒定步长的数组,由图可得参数为(起点,终点,步长),且当步长没有进行设置时,默认实现的数组元素个数为50.
(6)生成随机数数组
从这里也可以看出数组元素生成的默认类型是float。
有 float 就有 int ,像上图的代码就可以实现固定上下限条件下,随机整数元素的数组的生成。
2. numpy 数组的运算
(1)矩阵四则运算
由图中可以看出 ,数组的四则基本运算为对应的位置的元素进行四则运算。(仔细的童鞋可能发现第四个数组爆inf了,原因从上面创建数组的部分就可以看出来)
(2)矩阵乘法运算(叉乘)【内积运算与之类似,面向对象为一维数组,这里就不再过多说明了
】
需要利用 dot 函数。(这里与单位矩阵相乘等于矩阵本身)
(3)矩阵外积运算
需要利用 outer 函数 。(只对一维数组进行的外积运算,若运算对象超过一维,则会先将该数组展开为一维之后再对其进行运算)
3.numpy数组的属性
shape 为数组的排数与列数,dtype则是数组中元素的数据类型
像在二、1.(2)中说明的一样,int类型也可以转变为float类型。
4.数组的切片
经典的左闭右开,这里所写的是一维数组,如果进行多维数组的切片,则应当注意所切片数组的维数是否与切片方式相符。
5.数组的索引
(1)布尔值(boolean)索引
(2)条件值索引
总结
以上即为本人对 numpy 基础知识的一些整理总结,可能会有所不足之处,有则改之,无则加勉。