二、NumPy入门

来源:《Python数据科学手册》

url:https://github.com/jakevdp/PythonDataScienceHandbook

描述:笔记

目录

1、理解python中的数据类型

  1.1 Python整形不仅仅是一个整形

  1.2 Python列表不仅仅是一个列表

  1.3 Python中固定类型数组

  1.4 从Python列表创建数组

  1.5 从头创建数组

  1.6 Numpy标准数据类型

2、Numpy数组基础

  2.1 Numpy数组的属性

  2.2 数组索引:获取单个元素

  2.3 数组切片:获取子数组

  2.4 数组的变形

  2.5 数组拼接和分裂

3、Numpy数组的计算:通用函数

  3.1 缓慢的循环

  3.2 通用函数介绍

  3.3 探索Numpy的通用函数

  3.4 高级的通用函数特性

  3.5 通用函数:更多的信息

4、聚合:最小值、最大值和其他值

  4.1 数组值求和

  4.2 最大值和最小值和多维度聚合

5、数组的计算:广播

  5.1 广播的介绍

  5.2 广播的规则

  5.3 广播的实际应用

6、比较、掩码和布尔逻辑

  6.1 示例:统计下雨天数

  6.2 和通用函数类似的比较操作

  6.3 操作布尔数组

  6.4 将布尔数组作为掩码

7、花哨的索引

  7.1 探索花哨的缩影

  7.2 组合索引

  7.3 示例:选择随机点

  7.4 用花哨的索引修改值

  7.5 示例:数据区域划分

8、数组的排序

  8.1 Numpy中的快速排序:np.sort和np.argsort

  8.2 部分排序:分隔

  8.3 示例:k个最近邻

9、机构化数据:Numpy的结构化数组

  9.1 生成结构化数组

  9.2 更高级的复合类型

  9.3 记录数组:结构化数组的扭转

  9.4 关于pandas

 

1、理解python中的数据类型

   在c语言中,每个变量的数据类型被明确地声明

   在python中,类型是动态推断的,这意味着可以将任何类型的数据指定给任何变量。

  1.1 Python整形不仅仅是一个整形

   c语言整型本质上是对应某个内存位置的标签,里面存储的字节会编码成整型。

   python的整型其实是一个指针,指向包含这个python对象所有信息的某个内存位置,其中包括可以转换成整型的字节。

  1.2 Python列表不仅仅是一个列表

   在实现层面上,数组基本上包含一个指向连续数据块的指针。

   python列表包含一个指向指针块的指针,这其中的每一个指针对应一个完整的python对象,这意味着python列表是动态类型的。

   numpy式数组是固定类型的。

  1.3 Python中固定类型数组

   内置的数组(array)模块可以用于创建统一类型的密集数组。

   python的数组对象提供了数组型数据的有效存储,而numpy为该数据加上了高效的操作。

  1.4 从Python列表创建数组

   

   

  1.5 从头创建数组

   

 

 

    

    

  1.6 Numpy标准数据类型

    

 

 

numpy标准数据类型
数据类型 描述
bool_ 布尔值(真、True或假、False),用一个字节存储
int_ 默认整型(类似于c语言中的long,通常情况下是int64或int32)
intc 同c语言的int相同(通常是int32或int64)
intp 用作索引的整型(和c语言的ssize_t相同,通常情况下是int32或int64)
int8 字节(byte,范围从-128到127)
int16 整型(范围从-32768到32767)
int32 整型(范围从-2^32到2^32-1)
int64 整型(范围...)
unit8 无符号整型(范围从0到255)
unit16 无符号整型(范围从0到65535)
unit32 无符号整型(范围从0到429497295)
unit64 无符号整型
float_ float64的简化形式
float16 半精度浮点型:符号比特位,5比特位指数,10比特位尾数
float32 单精度浮点型
float64 双精度浮点型
complex_ complex128的简化形式
complex64 复数,由两个32位浮点数表示
complex128 复数,由两个64位浮点数表示

    

2、Numpy数组基础

  2.1 Numpy数组的属性

      确定数组的大小、形状、存储大小、数据类型

      

  2.2 数组索引:获取单个元素

     

 

 

 

  2.3 数组切片:获取子数组

      

 

 

      

  2.4 数组的变形

      

      

  2.5 数组拼接和分裂

      

 

 

      

 

      

      

 

       

       

3、Numpy数组的计算:通用函数

  3.1 缓慢的循环

  3.2 通用函数介绍

      numpy为很多类型的操作提供了非常方便的、静态类型的、可编译程序的接口,也被称作向量操作。

      numpy中的向量操作是通过通用函数实现的。

      通用函数的主要目的是对numpy数组中的值执行更快的重复操作。

  3.3 探索Numpy的通用函数

      通用函数有两种存在形式:一元通用函数(unary ufunc)对单个输入操作,二元通用函数(binary ufunc)对两个输入操作。        

    

 

 

 

运算符 对应的通用函数 描述
+ np.add 加分运算
- np.subtract 减法运算
- np.negative 负数运算
* np.multiply 乘法运算
/ np.divide 除法运算
// np.floor_divide 求整运算
** np.power 指数运算
% np.mod 模/余数
np.abs np.absolute 绝对值函数
numpy和scipy.special中提供了大量的通用函数

     

  3.4 高级的通用函数特性

     

 

 

      

 

 

      

4、聚合:最小值、最大值和其他值

  4.1 数组值求和

      np.sum()

  4.2 最大值和最小值和多维度聚合

  

 

 

numpy中可用的聚合函数
函数名称 NaN安全版本 描述
np.sum np.nansum 计算元素的和
np.prod np.nanprod 计算元素的积
np.mean np.nanmean 计算元素的平均值
np.std np.nanstd 计算元素的标准差
np.var np.nanvar 计算元素的方差
np.min np.nanmin 找出最小值
np.max np.nanmax 找出最大值
np.argmin np.nanargmin 找出最小值的索引
np.argmax np.nanargmax 找出最大值的索引
np.median np.nanmedian 计算元素的中位数
np.percentile np.nanpercentile 计算基于元素排序的统计值
np.any N/A 验证任何一个元素是否为真
np.all N/A 验证所有元素是否为真

          

5、数组的计算:广播

    广播可以简单理解为用于不同大小数组的二进制通用函数(加、减、乘等)的一组规则。

  5.1 广播的介绍

      

 

 

 

  5.2 广播的规则

      numpy的广播遵循一组严格的规则来决定两个数组间的操作

    

 

 

    

 

 

   

 

 

    

  5.3 广播的实际应用

      

    

6、比较、掩码和布尔逻辑

  6.1 和通用函数类似的比较操作      

  

   

 

 

 

运算符 对应的通用函数
== np.equal
!= np.not_equal
< np.less
<= np.less_equal
> np.greater
>= np.greater_equal

 

  6.2 操作布尔数组

      

 

 

       

 

 

 

  6.3 将布尔数组作为掩码

      

      

7、花哨的索引

  7.1 探索花哨的索引

      

 

 

       

 

 

 

  7.2 组合索引

      

 

 

   

  7.3 用花哨的索引修改值

      

 

 

 

 

8、数组的排序

  8.1 Numpy中的快速排序:np.sort和np.argsort      

    

 

 

 

     

 

 

     通过这样变换的行或列,任何行或列的值之间的关系都将丢失。

  8.2 部分排序:分隔

  

  8.3 示例:k个最近邻

      

9、机构化数据:Numpy的结构化数组

  9.1 生成结构化数组

  9.2 更高级的复合类型

  9.3 记录数组:结构化数组的扭转

  9.4 关于pandas

10、数组转置和换轴

  

 

 

   

 

    

 

 

11、将条件逻辑作为数组操作

    

 

 

 

    

12、唯一值与其他结合逻辑

   

 

 

数组的集合操作
unique(x) 计算x中的唯一值,并排序
intersect1d(x,y) 计算x和y的交集,并排序
union(x,y) 计算x和y的并集,并排序
in1d(x,y) 计算x中的元素是否包含在y中,返回一个布尔值数组
setdiff1d(x,y) 差集,在x中但不在y中的x的元素
setxor1d(x,y) 异或集,在x或y中,但不属于x,y交集的元素

 

13、线性代数

常用的numpy.linalg函数
函数 描述
diag 将一个方阵的对角(或非对角)元素作为一维数组返回,或者将一维数组转换成一个方阵,并且在非对角线上有零点
dot 矩阵点乘
trace 计算对角元素和
det 计算矩阵的行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆矩阵
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解(SVD)
solve 求解x的线性系统Ax=b,其中A是方阵
lstsq 计算Ax=b的最小二乘解

14、伪随机数生成

   

 

numpy.random中的部分函数列表
函数 描述
seed 向随机数生成器传递随机状态种子
permutation 返回一个序列的随机排列,或者返回一个乱序的整数范围序列
shuffle 随机排列一个序列
rand 从均匀分布中抽取样本
randint 根据给定的由低到高的范围抽取随机整数
randn 从均值0方差1的正态分布中抽取样本(MATLIB型接口)
binomial 从二项分布中抽取样本
normal 从正态(高斯)分布中抽取样本
beta 从beta分布中抽取样本
chisquare 从卡方分布中抽取样本

  

posted @ 2020-03-13 23:33  Norni  阅读(312)  评论(0编辑  收藏  举报