写在前面
在此之前,确保你已经安装了相应的库了,一句话pip3 install XXX即可,我相信大家应该都很熟悉了,既然都做数据分析了。
Numpy简介
对于numpy的话,我不想说太多,也不想讲一些大道理,哈哈,我想大家都学过python里面的数组吧。其实numpy你就可以把它看做是一个数组就可以了。但是要记住,作为数据分析的基础库,numpy可不是简简单单的数组,你虽然可以把它看做是一个数组,但是它相比于python的原生数组来说,增加了许多的功能和方法,记住,他也是我们之后所要学习的pandas的基础哦,所以还是比较重要的。所以,说了那么多,如果你对numpy感兴趣但是自己又是一个像我一样的小白的话,这篇博客也许会帮助到您。
Numpy的使用
为了方便,本次我使用的是jupyter notebook,请你也务必安装相应的模块,安装也很简单pip3 install jupyter即可。
注意:我没有给出源码,我希望大家如果有兴趣的话,一定会自己敲代码的。好了,我们看是进入正题。
1.第一步当然是建立一个python3文件然后导入相应的模块了,为了使用方便,我们使用as关键字给我们的numpy取一个别名

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

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

3.获取ndarray中的属性
python万事万物是对象,那么既然是一个对象,就会有一些属性和方法,让我们来看一下
3.1 dtype属性查看元素类型

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

由于我们传入的数组是一个一位数组,所以打印1
3.3 size获取数组元素个数

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

一行三列,默认1省略,列和行的乘积要等于总的元素数,这里输出(3,)
4 创建二维数组
4.1打印输出type及数组

4.2再次查看ndim,size,shape
发现我们创建的是三行两列的二维数组,所以维度2,元素个数6,数组的型也就是行列数为3*2

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

5 创建三个numpy ndarray数组



细心的你一定能够发现,其实你使用元组还是数组,或者是联合嵌套,numpy的array()函数都可以识别,帮我们完成数组的创建。
6 其它的一些dtype类型。了解即可
注意可用.name来查看属性类型的名称

7 array()函数的dtype参数选项
我们使用dtype='complex',如果你英文还可以,那么你就应该知道了是复数了,注意,默认是float.
我们也可以指定成int等其它类型。

8.numpy给我们提供的一些自动创建多维数组的简便函数
8.1 zeros()和ones(),empty()
在这里我们分别创建了两个全是0和全是1的3*3的数组。很方便的就创建出来了。(zero=0),所以把英文学好还是很有必要的啦

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

8.2 full()和eye()
full的话你可以制定维度,还有每一个维度里面的值,然后他就会按照我们的要求创建出符合条件的数组
eye的话会创建一个正对角线上面全部为1的数组(前提是行和列相等,其它情况可自行测试,它有三个参数),这个不常用,了解即可

8.3 arange()方法
大家一定都知道python的range方法,同样在numpy里面提供了一个类似但是功能更强大的arange()方法
下面是一些简单的例子,它有三个参数,依次是起始位置,结束位置(不包括结束值),步长。注意:range不支持小数,但是我们的arange支持。


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


8.4random()和linspace()
首先linspace是一个根据起始位置和结尾来进行拆分由两者所组成的空间域的,所以你就自然明白三个参数的意思了,提示一下最后一个是你指定要分成几份,这里分成5份。
random就是产生随机数,但是numpy里面的random会根据你的指示生成对应的维度的数组。

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

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

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


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

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


在这里你还必须知道一些很有用的聚集函数:
sum()求和
min()求最小值,max()求最大值
mean()求平均值,std()求标准差

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

注意,当数组是多维数组的时候你可以这样做:
写上行列索引,当然你还可以分别对他们进行切片操作。

切片:
我想,对于这个大家应该不陌生了,记住几点:
1. 对于多维,行列都可一切片
2.(:5)不包含5,省略不写在左边默认0,在右边默认数组长度-1即可。要学会活学活用。
3.注意你还可以指定切片步长
4.注意正负号索引机制


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


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

自定义函数:

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

13 shape,reshape(),ravel(),transpose()
shape,reshape()这一组,一个是属性,一个是方法,都可以实现对数组型的改变
ravel():在Numpy中经常使用到的操作由扁平化操作函数,说白了就是回到一维展示,还有我们的flat()也是扁平化操作函数
transpose()简单来说,就相当于数学中的转置,在矩阵中,转置就是把行与列相互调换位置

14 数组的拼接
numpy很强大,我们可以根据已有的数组,创建出新的数组:
它提供了vstack(),hstack()作为行插入和作为列插入,一个是增加行,一个是增加列,由此得到新的数组,具体如下
column_stack()作为列插入
np.row_stack()作为行插入

15 数组拆分:
既然可以组合成新的数组,那么我们也可以把一个数组拆分成几个新的部分
vsplit()按照行拆分
hsplit()按照列拆分

split()
这个函数也是拆分函数,但是更复杂,功能更强大,axis=1按照列拆分,axis=0按照行拆分
下面是按照1,3两列来拆分,然后返回三个新的数组


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