第二节 NumPy基础(二)

本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。

一、通用函数

通用函数(ufunc)是一种对ndarray中数据执行元素级运算的函数

一元ufunc:

第二节 NumPy基础(二)_第1张图片
第二节 NumPy基础(二)_第2张图片

二元ufunc:

第二节 NumPy基础(二)_第3张图片
第二节 NumPy基础(二)_第4张图片
第二节 NumPy基础(二)_第5张图片

二、利用数组进行数据处理

NumPy使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环)。用数组表达式代替循环的做法通常被称为矢量化。一般来说,矢量化的数组运算比等价的Python方式快上一两个数量级(甚至更多),尤其是各种数值计算。

1、计算函数sqrt(x^2+y^2)

np.meshgrid函数接受两个一维数组,并产生两个二维矩阵(对应于两个数组中所有的(x,y)对):

第二节 NumPy基础(二)_第6张图片
第二节 NumPy基础(二)_第7张图片

2、将条件逻辑表述为数组运算

numpy.where函数是三元表达式  x  if   condition  else  y的矢量化版本。

第二节 NumPy基础(二)_第8张图片
第二节 NumPy基础(二)_第9张图片
第二节 NumPy基础(二)_第10张图片

三、数学和统计方法

通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算。sum、mean以及标准差std等聚合计算(aggregation,通常叫做约简(reduction))既可以当做数组的实例方法调用,也可以当做顶级NumPy函数使用。

第二节 NumPy基础(二)_第11张图片
第二节 NumPy基础(二)_第12张图片
第二节 NumPy基础(二)_第13张图片

用于布尔型数组的方法:

第二节 NumPy基础(二)_第14张图片

排序:

第二节 NumPy基础(二)_第15张图片

唯一化以及其他的集合逻辑:

NumPy提供了一些针对一维ndarray的基本集合运算。最常用的可能要数np.unique了,它用于找出数组中的唯一值并返回已排序的结果:

第二节 NumPy基础(二)_第16张图片
译注2:就是“异或” 
第二节 NumPy基础(二)_第17张图片

四、用于数组的文件输入输出

1、将数组以二进制格式保存到磁盘

np.save()和np.load()是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中

通过np.savez()可以将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可

第二节 NumPy基础(二)_第18张图片
第二节 NumPy基础(二)_第19张图片

2、存取文本文件

第二节 NumPy基础(二)_第20张图片

该文件可以被加载到一个二维数组中(有时我们需要用np.loadtxt或更为专门的np.genfromtxt将数据加载到普通的NumPy数组中)

第二节 NumPy基础(二)_第21张图片

np.savetxt执行的是相反的操作:将数组写到以某种分隔符隔开的文本文件夹中

五、线性代数

线性代数(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分。

第二节 NumPy基础(二)_第22张图片
@符也可以用作中缀运算符,进行矩阵乘法:

常用的numpy.linalg函数(有一组标准的矩阵分解运算 以及诸如求逆和行列式之类的东西)

第二节 NumPy基础(二)_第23张图片
第二节 NumPy基础(二)_第24张图片

六、伪随机数生成

部分numpy.random函数:

第二节 NumPy基础(二)_第25张图片
第二节 NumPy基础(二)_第26张图片

用normal来得到一个标准正态分布的4*4样本数组:

第二节 NumPy基础(二)_第27张图片
第二节 NumPy基础(二)_第28张图片

这些都是伪随机数,是因为它们都是通过算法基于随机数生成器种子,在确定性的条件下生成的。你可以用NumPy的np.random.seed更改随机数生成种子:

np.random.seed(1234)

numpy.random的数据生成函数使用了全局的随机种子。要避免全局状态,你可以使用numpy.random.RandomState,创建一个与其它隔离的随机数生成器:

第二节 NumPy基础(二)_第29张图片

示例:随机漫步

随机产生1000个“抛硬币”结果,将其分别设置为1或-1,计算累积和(随机漫步):

第二节 NumPy基础(二)_第30张图片

一次模拟多个随机漫步:

只要给numpy.random的函数传入一个二元元组就可以产生一个二维数组,然后就可以一次性计算多个随机漫步过程(一行一个)的累计值。比如计算5000个:

第二节 NumPy基础(二)_第31张图片
第二节 NumPy基础(二)_第32张图片
第二节 NumPy基础(二)_第33张图片

快速学习:

第一节 NumPy基础(一)

第二节 NumPy基础(二)

第三节 Pandas入门基础

第四节 数据加载、存储

第五节 数据清洗

第六节 数据合并、重塑

第七节 数据聚合与分组运算

第八节 数据可视化

第九节 pandas高级应用

第十节 时间序列

第十一节 Python建模库

数据分析案例--1880-2010年间全美婴儿姓名的处理

数据分析案例--MovieLens 1M数据集

数据分析案例--USA.gov数据

数据分析案例--2012联邦选举委员会数据库

数据分析案例--USDA食品数据库

你可能感兴趣的:(第二节 NumPy基础(二))