利用Python进行数据分析的笔记-Numpy基础

Nump中的ndarray:一种多维数组对象

Numpy最重要的一个特点就是其N维数组对象(即ndarray),该对象是一个快速而灵活的大数据集容器。你可以利用它对整块数据执行一些数学运算,其语法跟标量元素之间运算一样。

利用Python进行数据分析的笔记-Numpy基础_第1张图片
image.png

创建ndarray

创建数组最简单的办法就是使用array函数,它接受一切序列型的对象(包含其他数组),然后产生一个的含有传入数据Numpy数组。以一个列表类型的转化例子:

利用Python进行数据分析的笔记-Numpy基础_第2张图片
image.png

嵌套序列 (比如由一组等长列表组成的列表)将会被转化为一个多维数组:

利用Python进行数据分析的笔记-Numpy基础_第3张图片
image.png

特殊数组(全0或全1数组、单位数组、空数组)

利用Python进行数据分析的笔记-Numpy基础_第4张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第5张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第6张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第7张图片
image.png
image.png

ndarray的数据类型

dtype(数据类型)是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所属信息:

利用Python进行数据分析的笔记-Numpy基础_第8张图片
image.png

dtype是Numpy如此强大和灵活的原因之一。多数情况下,它们直接映射到相应的机器表示,使得“读写磁盘上的二进制数据流”以及“集成低级语言代码”(如C以及Fortran)等 ,使得工作变得更加简单

利用Python进行数据分析的笔记-Numpy基础_第9张图片
image.png

数组与标量之间的运算

数组与标量之间的运算很重要,因为这样你就不用编写循环即可对数据执行批量运算的操作。这个通常叫做矢量化,大小相等的数组之间的任何算术运算都会将运算应用到元素级别:

利用Python进行数据分析的笔记-Numpy基础_第10张图片
image.png

基本的索引和切片

Numpy数组的索引是一个内容丰富的主题,因为选取数据子集或者单个元素的方式有很多。

利用Python进行数据分析的笔记-Numpy基础_第11张图片
image.png

如上所示,当你将一个标量赋值给一个切片时,无论切片的元素是单个还是多个,该值都会自动广播到这个切片范围。**跟列表最重要的区别就是,数组切片是原始数组的视图。这个意味着数据是不会被复制的,视图上的修改都会反映到源数组上:

利用Python进行数据分析的笔记-Numpy基础_第12张图片
image.png

由于Numpy的设计目的是处理大数据,所以你可以想象下,假如Numpy坚持要将数据复制来复制去,势必会产生性能问题和内存消耗问题

如果你想要得到的ndarray的切片的一份副本而非视图,可以使用显式复制,例如arr5.copy()

对于多维度数组,能做的事情更多,在一个二维数组中,各索引位置上的元素不再是标量,而是一维数组:

利用Python进行数据分析的笔记-Numpy基础_第13张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第14张图片
image.png

布尔型索引

利用Python进行数据分析的笔记-Numpy基础_第15张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第16张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第17张图片
image.png
利用Python进行数据分析的笔记-Numpy基础_第18张图片
image.png

通过布尔型索引选取数组中的数据,将总是创建数据的副本,即使返回一模一样的数组也是如此。

Python关键字and和or在布尔型数组中无效
通过布尔型数组设置值是一种经常用到的手段,为了将data中的所用的负值都设置为0
通过一维布尔型数组设置整行或整列的值

利用Python进行数据分析的笔记-Numpy基础_第19张图片
image.png

花式索引

花式索引是一个Numpy的术语,它指的是利用整数数组进行索引。只需传入一个用于指定顺序的整数列表或ndarray即可:

利用Python进行数据分析的笔记-Numpy基础_第20张图片
image.png

未完待续

你可能感兴趣的:(利用Python进行数据分析的笔记-Numpy基础)