美文网首页呆鸟的Python数据分析
可能是最全Numpy的介绍及基本用法

可能是最全Numpy的介绍及基本用法

作者: 采星星的小太阳BavaLI | 来源:发表于2020-04-07 23:44 被阅读0次

    写在前面

    在此之前,确保你已经安装了相应的库了,一句话pip3 install XXX即可,我相信大家应该都很熟悉了,既然都做数据分析了。

    Numpy简介

    对于numpy的话,我不想说太多,也不想讲一些大道理,哈哈,我想大家都学过python里面的数组吧。其实numpy你就可以把它看做是一个数组就可以了。但是要记住,作为数据分析的基础库,numpy可不是简简单单的数组,你虽然可以把它看做是一个数组,但是它相比于python的原生数组来说,增加了许多的功能和方法,记住,他也是我们之后所要学习的pandas的基础哦,所以还是比较重要的。所以,说了那么多,如果你对numpy感兴趣但是自己又是一个像我一样的小白的话,这篇博客也许会帮助到您。

    Numpy的使用

    为了方便,本次我使用的是jupyter notebook,请你也务必安装相应的模块,安装也很简单pip3 install jupyter即可。

    注意:我没有给出源码,我希望大家如果有兴趣的话,一定会自己敲代码的。好了,我们看是进入正题。

    1.第一步当然是建立一个python3文件然后导入相应的模块了,为了使用方便,我们使用as关键字给我们的numpy取一个别名

    1

    2.array()方法的使用

    这里我们调用numpy一个叫做array的方法,赋值给一个a,shift+enter就可以看到结果了,结果输出了一个似乎像是python数组的东西,那么它究竟是不是呢?。

    2

    2.1查看a的类型,使用type()函数,shift+enter查看结果

    发现他是一个ndarray类型,你一定纳闷了,其实在我看来不用纠结,你直接记住它其实就是一个数组,那为什么还有一个nd呢?你别忘了咱们数组是不是有维度的呀,所以这样理解是不是好多了。记住即可。

    3

    3.获取ndarray中的属性

    python万事万物是对象,那么既然是一个对象,就会有一些属性和方法,让我们来看一下

    3.1 dtype属性查看元素类型

    4

    由于前面我们给numpy传入了一个数组,数组的类型是数字,所以是int型。这里调用这个属性来查看元素类型

    3.2 ndim属性查看数组维度

    5

    由于我们传入的数组是一个一位数组,所以打印1

    3.3 size获取数组元素个数

    6

    我们传入的数组是[1,2,3],我们使用size的时候打印出的个数为3

    3.4 shape获取行列数

    7

    一行三列,默认1省略,列和行的乘积要等于总的元素数,这里输出(3,)

    4 创建二维数组

    4.1打印输出type及数组

    8

    4.2再次查看ndim,size,shape

    发现我们创建的是三行两列的二维数组,所以维度2,元素个数6,数组的型也就是行列数为3*2

    9

    4.3 itemsize查看元素存储类型

    由于我们创建的是一个int,float都含有的数组,所以在存储的时候会使用float来进行全部存储,每个8个字节,所以打印8。

    ,10

    5 创建三个numpy ndarray数组

    11 12 13

    细心的你一定能够发现,其实你使用元组还是数组,或者是联合嵌套,numpy的array()函数都可以识别,帮我们完成数组的创建。

    6 其它的一些dtype类型。了解即可

    注意可用.name来查看属性类型的名称

    14

    7 array()函数的dtype参数选项

    我们使用dtype='complex',如果你英文还可以,那么你就应该知道了是复数了,注意,默认是float.

    我们也可以指定成int等其它类型。

    15

    8.numpy给我们提供的一些自动创建多维数组的简便函数

    8.1 zeros()和ones(),empty()

    在这里我们分别创建了两个全是0和全是1的3*3的数组。很方便的就创建出来了。(zero=0),所以把英文学好还是很有必要的啦

    16

    empty()其实没什么用,大家了解一下,其实说白了就是填充一些脏数据进入我们制定的维度的数组中

    17

    8.2 full()和eye()

    full的话你可以制定维度,还有每一个维度里面的值,然后他就会按照我们的要求创建出符合条件的数组

    eye的话会创建一个正对角线上面全部为1的数组(前提是行和列相等,其它情况可自行测试,它有三个参数),这个不常用,了解即可

    18

    8.3 arange()方法

    大家一定都知道python的range方法,同样在numpy里面提供了一个类似但是功能更强大的arange()方法

    下面是一些简单的例子,它有三个参数,依次是起始位置,结束位置(不包括结束值),步长。注意:range不支持小数,但是我们的arange支持。

    19 20

    reshape方法可以配合arange来一起使用,reshape就是改变数组的型,说白了你可以把一个一维数组变成一个多维的,你也可以把一个多维的变成一个一维数组。在这里通过使用reshape,把一个具有12个元素的一维数组变成一个三行四列的二维数组。注意,前后数组的size要一样。不然会报错

    21 22

    8.4random()和linspace()

    首先linspace是一个根据起始位置和结尾来进行拆分由两者所组成的空间域的,所以你就自然明白三个参数的意思了,提示一下最后一个是你指定要分成几份,这里分成5份。

    random就是产生随机数,但是numpy里面的random会根据你的指示生成对应的维度的数组。

    23

    9.numpy的算数运算基本操作

    同样,numpy是支持基本的算数运算的,当然你还可以把两个numpy对象进行运算,他们会一一对应进行相应的操作,具体如下:

    24

    值得注意的是,numpy还提供如,sqrt(),sin(),cos()之类的计算方法,调用即可,还有如果你学过代数的话你可能会被混淆,注意,它不是代数里面的运算规则,他会一一对应进行运算。

    25

    在多维数组进行运算的时候如果维度行列不一样,就会报错

    26 27

    如果你要进行代数里面的矩阵乘法运算,那么你只需要调dot()方法就可以了:

    28

    10 numpy的一些运算

    我们也可以对一个numpy数组进行如下运算:一一对应

    29 30

    在这里你还必须知道一些很有用的聚集函数:

    sum()求和

    min()求最小值,max()求最大值

    mean()求平均值,std()求标准差

    31

    11 numpy的索引,切片,迭代:

    同样,numpy也支持正负索引,取值的话也和普通数组一样,但是记住,当你要单独取出多个值的时候,记得加一个中括号括起来。

    32

    注意,当数组是多维数组的时候你可以这样做:

    写上行列索引,当然你还可以分别对他们进行切片操作。

    33

    切片:

    我想,对于这个大家应该不陌生了,记住几点:

    1. 对于多维,行列都可一切片

    2.(:5)不包含5,省略不写在左边默认0,在右边默认数组长度-1即可。要学会活学活用。

    3.注意你还可以指定切片步长

    4.注意正负号索引机制

    34 35

    迭代:

    同样,我们也可以使用for循环来遍历numpy数组,对于多维数组,使用flat属性,直接可以打印它的每一个元素

    36 37

    apply_along_axis()函数

    这个函数的意思是你可以指定一个数组,然后指定是行或者列进行一个函数运算,当然,你可以自己制定这个函数。axis=0代表对列,axis=1代表对行进行运算,这里我们对数组A分别按照行和列进行求平均。

    38

    自定义函数:

    39

    12 numpy 进行bool运算

    如果进行布尔运算,那么符合条件的就返回True 反之FALSE,如果你想要取出满足条件的值,那么你直接加上数组名字在加上一个括号即可。

    40

    13 shape,reshape(),ravel(),transpose()

    shape,reshape()这一组,一个是属性,一个是方法,都可以实现对数组型的改变

    ravel():在Numpy中经常使用到的操作由扁平化操作函数,说白了就是回到一维展示,还有我们的flat()也是扁平化操作函数

    transpose()简单来说,就相当于数学中的转置,在矩阵中,转置就是把行与列相互调换位置

    41,

    14 数组的拼接

    numpy很强大,我们可以根据已有的数组,创建出新的数组:

    它提供了vstack(),hstack()作为行插入和作为列插入,一个是增加行,一个是增加列,由此得到新的数组,具体如下

    column_stack()作为列插入

    np.row_stack()作为行插入

    42

    15 数组拆分:

    既然可以组合成新的数组,那么我们也可以把一个数组拆分成几个新的部分

    vsplit()按照行拆分

    hsplit()按照列拆分

    43

    split()

    这个函数也是拆分函数,但是更复杂,功能更强大,axis=1按照列拆分,axis=0按照行拆分

    下面是按照1,3两列来拆分,然后返回三个新的数组

    44 45

    总结:

    在这里我们就把numpy一些基本常见的语法说完了,不容易呀,希望对大家有用,可以点赞支持一下,谢谢每一个坚持看完的人,写博客这种东西就是一件利人利己的事情,大家一起努力呀!!!!!!!

    相关文章

      网友评论

        本文标题:可能是最全Numpy的介绍及基本用法

        本文链接:https://www.haomeiwen.com/subject/tgpophtx.html