Numpy可以好好补补数学.捡起了儿时的快乐
数组和矢量计算
- Numpy介绍
- Numpy中ndarray:一种多维数组对象
备注:矢量(vector)是一种既有大小又有方向的量,又称为向量。一般来说,在物理学中称作矢量,例如速度、加速度、力等等就是这样的量。舍弃实际含义,就抽象为数学中的概念──向量。在计算机中,矢量图可以无限放大永不变形.
Numpy的功能
- ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组
- 用于对整组数据进行快速运算的标准数学函数(无需编写循环)
- 用于读写磁盘数据的工具以及用于操作内容映射文件的工具
- 线性代数,随机数生成以及傅里叶变换功能
主要的功能
- 用于数据整理和清算,子集构造和过滤,转换等快速的矢量化数据运算
- 常用的数组算法,如排序,唯一化,集合运算等
- 高效的描述统计和数据聚合/摘要运算
- 用于异构数据集的合并/连接运算的数据对齐和关系型数据运算
- 将条件逻辑表述为数组表达式
- 数据的分组运算(聚合,转换,函数应用等)
Numpy的优势
- Numpy是在一个连续的内存块中存储数据,独立于其他的python内置对象
- Numpy可以在整个数组上执行复杂的计算,而不需要python的for循环
Numpy中的ndarray
一种多维数组对象,关于多维数组可以参考
操作1
操作2
ndarray是一个通用的同构数据多位容器,所有元素必须是相同类型的,每个数组都一个shape(一个表示各维度大小的元组)和一个dtype(用于描述数组数据类型的对象)
创建ndarray(从零开始)
创建数组最简单的方法就是使用array函数
通过其他方式创建数组
在np.array可以通过zeros和ones创建指定长度和形状的全0或者全1数组
ndarray的数据类型
dtype是一个特殊的对象,讲一块内容解释为特定数据类型所需的信息
类型转换
Numpy数组的运算
数组很重要,不用编写循环即可对数据执行批量运算
不同大小数组之间的运算叫做广播
基本的索引和切片
数组切片是原始数组的视图,视图上的任何修改都会直接反应到源数组上
在进行切片的时候该值会自动传播,以为着跟列表的区别在,数组切片是原始数据的修改。数据不会被复制
如果明确要复制,使用arr[5:8].copy
对于高维度数组,在一个二维数组中,各索引位置上的元素不再是标量而是一维数组
对于各个元素进行递归访问,可以传入一个以逗号隔开的索引列表选取单个元素
二维数组索引方式
三维数组索引方式
测试用例
切片索引
ndarray的切片语法和列表的一维对象差不多,二维稍微有点区别
布尔类型索引
通知在匹配完后,同样可以进行切片的操作
一些常见操作
花式索引
花式索引是一个Numpy术语,利用整数数组进行索引
花式索引和切片不一样,总是将数据复制到新数组中
数组转置和轴对换
转置是重塑的一种特殊形式,数组不仅有transpose方法,还有一个特殊的T属性