numpy是使用Python进行科学计算的基本软件包。它包含以下内容:
- 强大的N维数组对象
- 复杂的(广播)功能
- 集成C / C ++和Fortran代码的工具
- 有用的线性代数,傅立叶变换和随机数功能
我们先比较一下numpy和list的运算速度,比如随机生成10000的数组,并且每个元素都做平方处理:
可以发现,numpy的运行速度比list要快很多。
numpy参考文档是http://www.numpy.org/,同学们可以自己学习。
-
创建数组
a) array():将Python对象(list/tuple)转换为数组
b) empty():分配指定大小的数组,未初始化 ,随机填充值
c) zeros(), ones():创建全为0或1的数组
d) ones_like(),zeros_like():根据指定的形状和type,创建全1、全0数组
e) eye(), diag():创建对角矩阵
f) arange():通过开始值、终值和步长创建一维数组
g) linspace():通过开始值、终值和元素个数创建一维数组
h) logspace():同上,但创建等比数 -
数组的基本属性
a) ndim:维度
b) shape:各维度大小(元组)
c) size:元素个数
d) dtype:数据类型
e) 转换数据类型–arr.astype(dtype)
3. 数组的形状操作
a) reshape 有返回值
b) shape 数组本身改变
c) ravel 扁平化
d) flatten 扁平化
4. 广播
a) 让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐
b) 输出数组的shape是输入数组shape的各个轴上的最大值
c) 如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错
d) 当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值
5. 索引和切片
这里主要和同学们介绍一种布尔型索引。
假设每个字母都对应data数组中的一行
如何选出对应于字母’a’的所有行???
要选择’a’以外的其他值,既可以使用不等于符号(!=),也可以通过~对条件进行否定
6. numpy的通用函数
一元函数,是对每一个元素都进行操作
二元函数使用的时候,注意下广播机制。
比如:
7. 将条件逻辑表述为数组运算: where
numpy.where函数是三元表达式x if condition else y的矢量化版本
np.where的第二个和第三个参数不必是数组,它们都可以是标量值
在数据分析工作中,where通常用于根据另一个数组而产生一个新的数组