Numpy全系列笔记

目录

0.导引

1.AI前导课

2.Jupyter

3.Ipython

3.1 运行外部的python命令 

3.2 运行计时

3.3  查看当前会话中所有变量与函数

3.4 执行Linux指令

3.5 更多魔法指令

3.6 Ipython输入输出历史

4.numpy数组基本概念

5.numpy数组的构造与属性

5.1 numpy的一般构造 

5.2 numpy的常规函数构造

5.3 numpy必记属性

6.numpy的基本操作

6.1 索引

6.2 切片

6.3 变形

6.4 级联 

6.5 切分

7.numpy的聚合操作

7.1 常见的聚合操作

7.2 广播运算

8.矩阵运算

9.numpy排序

9.1 快速排序

​9.2 部分排序 


0.导引

Numpy全系列笔记_第1张图片

Numpy全系列笔记_第2张图片

1.AI前导课

1.数据阶段  要使用的编译器:jupyter notebook

2.数据阶段:

        AI 初级

        AI体系: google alphago  深度学习阶段

                       商业阶段:推荐系统,人脸识别,验证码识别,BI(数据分析)(偏运维)

                       工业领域:智能驾驶,语义分析,情感分析,目标检测(偏重算法开发)

        数学基础:高等数学,概率论,线性代数

        python 基本库: numpy pandas  ==>  数据分析+人工智能的基础

                                  sklearn              ==>  数据挖掘+人工智能的基础(也可以用于建模)

                                  tensorflow         ==>   深度学习的框架

        可视化工具:Matplotlib  seaborn  Excel  POWERBI  Tableau  SPSS

        python是综合学科:python-web  爬虫  数据分析  

                                        数据分析岗  监控数据  给出一些决策建议(商业数据分析模式)

2.Jupyter

shift+tab     ==>   查看帮助文档  {  help(len) 获取  ? len }

shift+enter  ==>   运行 { 或者:ctrl+enter }

3.Ipython

3.1 运行外部的python命令 

使用下面的命令运行外部的python文件(默认是当前目录,最好加上绝对路径):

        %run *.py                           注意:路径不用加双引号


运行外部的python,相当于把整个文件的资源都加载到jupyter notebook中了,所以py文件里面的所有变量。函数都可以直接使用。

如下所示: 

Numpy全系列笔记_第3张图片  

Numpy全系列笔记_第4张图片

3.2 运行计时

%     表示检测一行代码

%%  表示检测多行代码

time  代码运行一次

timeit 代码运行多次,求平均时间

%time         表示检测一行代码运行一次时间

%timeit       表示检测一行代码运行的平均时间      

%%time      表示多行代码运行时间

%%timeit    表示多行代码平均运行时间

短代码建议用第二种,长代码用第一种,因为第二种运行多次耗时太长。

Numpy全系列笔记_第5张图片

Numpy全系列笔记_第6张图片Numpy全系列笔记_第7张图片

Numpy全系列笔记_第8张图片

3.3  查看当前会话中所有变量与函数

%who          ==>   快速查看当前会话的所有变量与函数名称

%whos        ==>   查看当前会话的所有变量与函数名称的详细信息

%who_ls     ==>   返回一个字符串列表,里面元素是当前会话的所有变量与函数名称

Numpy全系列笔记_第9张图片

3.4 执行Linux指令

mac Linux        ==>  使用!

windows           ==>  使用%


注意:%与指令之间无空格

Numpy全系列笔记_第10张图片

3.5 更多魔法指令

列出所有的魔法指令:%lsmagic 

Numpy全系列笔记_第11张图片

 查看魔法指令的文档:使用? 

Numpy全系列笔记_第12张图片

3.6 Ipython输入输出历史

  • 可使用In/Out调用输入输出历史:

        In返回一个字符串列表,里面是所有输入命令的字符串;

        Out返回一个含有输出的命令的序号及其输出组成的字典;

        两者皆可以通过索引获取元素。

  • 使用下划线表示输出:
    "_"表示上一个输出
    "_2"表示Out[2]

Numpy全系列笔记_第13张图片

4.numpy数组基本概念

numpy提供了一种数组类型,高维数组,提供了数据分析的运算基础(业务表一般就是二维) 

Numpy全系列笔记_第14张图片

c                ==>       数组的概念:数据类型一致的一个连续的内存空间
python       ==>      list列表(C语言说:列表其实就是一个指针数组),列表不要求数据类型一致
numpy       ==>      同样是一个【有序】的,【相同数据类型】的集合

numpy设计初衷是用于运算的,所以对数据类型进行统一优化。
注意︰

  • numpy默认ndarray的所有元素的类型是相同的
  • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int

Numpy全系列笔记_第15张图片

5.numpy数组的构造与属性

5.1 numpy的一般构造 

  • array(object,dtype=None,copy=True,order='K', subok=False,ndmin=0)

Numpy全系列笔记_第16张图片

Numpy全系列笔记_第17张图片

Numpy全系列笔记_第18张图片

5.2 numpy的常规函数构造

包含以下常见创建方法︰
        1) np.ones(shape, dtype=None, order='C')
        2) np.zeros(shape, dtype=float, order='C')
        3) np.full(shape, fill_value, dtype=None, order='C')
        4) np.eye(N, M=None,k=0, dtype=float)          对角线为1其他的位置为0
        5) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

        6) np.arange([start, ]stop, [step, ]dtype=None)
        7) np.random.randint(low, high=None, size=None, dtype=')
        8)正态分布函数
                . np.random.randn(d0, d1,..., dn)   标准正态分布

                . np.random.normal()                          普通正态分布
        9) np.random.random(size=None)              生成0到1的随机数,左闭右开

        10)np.random.permutation(n)                     生成n个无重复的整数,用于随即生成索引

shape的几种情况:

shape=(m,n)   m行n列   二维数组

shape=(m)      m个元素的一维数组

shape(m,)       m个元素的一维数组


shape(m,1)  m行1列   二维数组     [[1],[3],[5]]

shape(1,m)  1行m列   二维数组     [[1,2,3]]

1) np.ones(shape, dtype=None, order='C')

Numpy全系列笔记_第19张图片

Numpy全系列笔记_第20张图片

 2) np.zeros(shape, dtype=float, order='C')

Numpy全系列笔记_第21张图片Numpy全系列笔记_第22张图片

3) np.full(shape, fill_value, dtype=None, order='C')

Numpy全系列笔记_第23张图片

4) np.eye(N, M=None,k=0, dtype=float)          对角线为1其他的位置为0

 Numpy全系列笔记_第24张图片

Numpy全系列笔记_第25张图片

5) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
       
等差数列    关注生成多少个数据   [start,stop]

6) np.arange([start, ]stop, [step, ]dtype=None)

        等差数列     关注步长                    [start,stop)

Numpy全系列笔记_第26张图片

7) np.random.randint(low, high=None, size=None, dtype=')

Numpy全系列笔记_第27张图片

8)正态分布函数
        . np.random.randn(d0, d1,..., dn)    标准正态分布

        . np.random.normal()                            普通正态分布
9) np.random.random(size=None)              生成0到1的随机数,[0,1)

Numpy全系列笔记_第28张图片

Numpy全系列笔记_第29张图片

Numpy全系列笔记_第30张图片

10)np.random.permutation(n)                     生成n个无重复的整数,用于随即生成索引

5.3 numpy必记属性

4个必记参数:

  •  ndim:维度
  • shape :形状(各维度的长度)
  • size:总长度
  • dtype :元素类型

Numpy全系列笔记_第31张图片  

6.numpy的基本操作

6.1 索引

一维与列表完全一致,多维时同理。 

二维数组:

        num[0]        ==>第0行

        num[1][2]    ==>1行2列(兼容)

        num[1,2]     ==>1行2列(特有方式)

一维数组:

        num[2]

        num[[0,1,2]     ==>同时访问多个

高级用法:

        使用列表下标访问;

        使用bool类型访问。

数据翻转:arr[::-1]

Numpy全系列笔记_第32张图片

Numpy全系列笔记_第33张图片  

Numpy全系列笔记_第34张图片

6.2 切片

一维与列表完全一致,多维时同理。

所有的切片都是左闭右开区间   [start,end)

不论多少维,每一个维度的切片范围都是用冒号表示,使用逗号分割,最后一个维度可以省略,但是被切片的维度之前的维度不能省。

Numpy全系列笔记_第35张图片

Numpy全系列笔记_第36张图片

 Numpy全系列笔记_第37张图片

6.3 变形

使用reshape函数,reshape返回的是一个新数组,原数组不变。

注意:参数是一个tuple,但不写成元组也可以;不可以将参数写成shape=(m,n),报错。

Numpy全系列笔记_第38张图片

6.4 级联 

级联:就是将两个数组连接。

np.concatenate()级联需要注意的点:
        1.级联的参数是列表:一定要加中括号或小括号

        2.维度必须相同
        3.形状相符
        4.【重点】级联的方向默认是shape这个tuple的第一个值所代表的维度方向

        5.可通过axis参数改变级联的方向


np.hstack与np.vstack:
水平级联与垂直级联,处理自己,进行维度的变更

Numpy全系列笔记_第39张图片

Numpy全系列笔记_第40张图片

6.5 切分

与级联类似,三个函数完成切分工作:

  • np.split(ary, indices_or_sections, axis=0)
  • np.vsplit(ary, indices_or_sections)
  • np.hsplit(ary, indices_or_sections)

indices_or_sections=[n1,n2,...]可以指定切的方法,  n1,n2相当于刀,切一刀。

Numpy全系列笔记_第41张图片Numpy全系列笔记_第42张图片

Numpy全系列笔记_第43张图片

Numpy全系列笔记_第44张图片

7.numpy的聚合操作

7.1 常见的聚合操作

arr.sum()        ==>  求和                                arr.max()           ==>  求最大

arr.min()         ==>  求最小                            arr.argmin()       ==>  求最小值下标

arr.mean()      ==>  求平均值                        np.median(arr)   ==>  求中位数(注意:不一样)

arr.std()          ==>  求标准差                        arr.var()              ==>求方差

np.percentile(arr,[0.25,0.5,0.75])      ==>  求分位数

arr.all()           ==>   bool列表里所有值都是True             或者 all(arr)

arr.any()         ==>   bool列表里有值是True                    或者 any(arr)

Numpy全系列笔记_第45张图片

Numpy全系列笔记_第46张图片

Numpy全系列笔记_第47张图片

7.2 广播运算

广播运算,数组中的每一个数都和一个数字进行运算。

【重要】 nd.array广播机制的两条规则:

  • 规则一︰为缺失的维度补
  • 规则二︰假定缺失元素用已有值填充(填充是拿整体填充,不可以只拿一部分,比如2行2列不可以扩充到2行3列只能2行4列或其他)

Numpy全系列笔记_第48张图片

Numpy全系列笔记_第49张图片

Numpy全系列笔记_第50张图片 

Numpy全系列笔记_第51张图片

 

8.矩阵运算

a*b            ==>  对应位置相乘

a.dot(b)     ==>  矩阵相乘(一行乘以一列)       或者np.dot(a,b)

Numpy全系列笔记_第52张图片 

9.numpy排序

9.1 快速排序

np.sort()与ndarray.sort()都可以,但有区别:

  • np.sort()不改变输入
  • arr.sort()本地处理,不占用空间,但改变输入

Numpy全系列笔记_第53张图片9.2 部分排序 

np.partition(a,k)
有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。

  • 当k为正时,我们想要得到最小的k个数
  • 当k为负时,我们想要得到最大的k个数

Numpy全系列笔记_第54张图片

 

你可能感兴趣的:(python,python,numpy,数据分析工具)