呆鸟的Python数据分析

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

2020-04-07  本文已影响0人  采星星的小太阳BavaLI

写在前面

在此之前,确保你已经安装了相应的库了,一句话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一些基本常见的语法说完了,不容易呀,希望对大家有用,可以点赞支持一下,谢谢每一个坚持看完的人,写博客这种东西就是一件利人利己的事情,大家一起努力呀!!!!!!!

上一篇下一篇

猜你喜欢

热点阅读