利用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:

 

在上面的例子中,整数被转换为了浮点数,如果将浮点数转换为整数,则小数部分将会被截断

 

posted @ 2020-09-02 15:47  求进步的娃  阅读(256)  评论(0编辑  收藏  举报