NumPy入门

Posted xiaopihaierletian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy入门相关的知识,希望对你有一定的参考价值。

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

url:GitHub - jakevdp/PythonDataScienceHandbook: Python Data Science Handbook: full text in Jupyter Notebooks

描述:笔记

目录

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.absnp.absolute绝对值函数
numpy和scipy.special中提供了大量的通用函数

     

  3.4 高级的通用函数特性

     

      

      

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

  4.1 数组值求和

      np.sum()

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

  

numpy中可用的聚合函数
函数名称NaN安全版本描述
np.sumnp.nansum计算元素的和
np.prodnp.nanprod计算元素的积
np.meannp.nanmean计算元素的平均值
np.stdnp.nanstd计算元素的标准差
np.varnp.nanvar计算元素的方差
np.minnp.nanmin找出最小值
np.maxnp.nanmax找出最大值
np.argminnp.nanargmin找出最小值的索引
np.argmaxnp.nanargmax找出最大值的索引
np.mediannp.nanmedian计算元素的中位数
np.percentilenp.nanpercentile计算基于元素排序的统计值
np.anyN/A验证任何一个元素是否为真
np.allN/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从卡方分布中抽取样本

  

以上是关于NumPy入门的主要内容,如果未能解决你的问题,请参考以下文章

[算法竞赛入门]蛇形填数

树形dp入门-加分二叉树(luogu1040)

用 numpy 加速求解三角线性系统?

Python科学计算类库

numpy矩阵和数组的区别

python扩展库numpy中函数meshgrid()的使用[当你想要两个for循环嵌套处理时,就该想到它]