利用Python进行数据分析(一)Numpy基础:数据和矢量计算
对于大部分数据分析应用而言,最关注的功能主要集中在:
- 用于数据整理和清理、子集构造和过滤、轮换等快速的矢量化运算
- 常用的数组算法,如排序、唯一化、集合运算等
- 高效的描述统计和数据集合、摘要运算
- 用于异构数据集的合并、连接运算的数据对齐和关系型数据运算
- 将条件逻辑表述为数组表达式(而不是带有if-else-else分支的循环)
- 数组的分组运算(聚合、转换、函数应用等)
NumPy的nDarray:一种多维数组对象
Numpy最重要的特点就是N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。可以利用这种数组对整块数据执行一些数学运算,其语法和标量元素之间的运算一样:
ndarray是一个通用的同构数据多维容器,也就是说,其中的所有元素都必须是相同类型的,每一个数组都有一个shape(一个表示各维度大小的元组)和一个dtype(一个用于说明数组数据类型的对象).虽然不需要深入理解Numpy,但是精通面向数组的编程和思维方式是成为Python科学计算牛人的一大关键步骤。
注意:当看到数组,Numpy数组,ndarray时,基本上是指同一样东西,即ndarray对象
创建ndarray
创建数组最简单的方法是使用array函数,它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的Numpy数组。
嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组:
除非显式说明,np.array会尝试为新建的这个数组推断出一个较为合适的数据类型。数据类型保存在一个特殊的stype对象中。
除np.array之外,还有一些函数也可以新建数组,比如,zeros和mones分别可以创建指定长度或形状的全0或全1数组,empty可以创建一个没有任意具体值得数组。要用这些方法创建多维数组,只需传入一个表示形状的元祖即可
注意:认为np.empty会返回全0数组是不安全的,很多情况,他返回的都是一些未初始化的垃圾值
arange是Python内置函数range的数组版:
由于numpy关注的是数值计算,所以如果没有特别的指定,数据类型基本都是float64(浮点型)
数组创建函数:
数值型dtype的命名方式:一个类型名(flaot或int)后面跟一个用于表示各元素位长的数字
numpy所有的数据类型
可以通过ndarray的astype显式的转换其dtype:
在上面的例子中,整数被转换为了浮点数,如果将浮点数转换为整数,则小数部分将会被截断