2020年数据分析必知必会(一):NumPy数组

(38) 2023-10-19 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说2020年数据分析必知必会(一):NumPy数组,希望能够帮助你!!!。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第1张

本文将进一步介绍Python数据分析中的一个重要内容——NumPy数组。在上一次的数据分析开篇中,我们已经初步体验到了NumPy的强大功能,但是它的强大之处并不限于一个小小的向量求和。NumPy包含的内容有:

数据类型;

数组类型;类型转换;创建数组;

数组索引;数组切片;改变维度。

这些内容我们会陆续介绍,废话不多说,下面开始第一部分内容。

1、NumPy数组对象

何为NumPy的数组对象?

这里先介绍ndarray对象,ndarray 是一个多维数组对象。

该对象由实际的数据(或数据本身)和描述这些数据的元数据构成的。

如何用(操作)?

大部分的数组的操作仅仅修改元数据部分,而不改变底层的实际数据。换句话说,变化的只是元数据而已。

何为元数据?

元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。

进一步解释:

元数据(Metadata)是描述其它数据的数据(data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)

这里提到的ndarray与开篇讲到的arrange()函数有注意的优势?

开篇的arrange()函数是用来生成数组的,事实上,该函数在开篇的例子(一个简单的应用)中是用来存放一组数值的一维数组。而相对于该函数来说,ndarray的维度却比arrange()高很多。

2、NumPy数组的优势

NumPy数组有哪些优势?

(1)、数组由相同种类的元素所组成。

所谓“相同种类”就是数据结构中的数据项的类型要相同,例如,一个数据在计算过程中是以列表的形式进行使用,那么其他数据的存放形式也是列表的形式。否则会报错。这样做的优点:方便存放,计算,同时可以知道存储空间大小。

(2)、NumPy数组能够运用向量化来处理整个数组。

如何解释?就拿Python的列表来说,列表通常借助循环语句遍历的方式来处理数组。在开篇的一个简单的应用中就体现了这一特点。

(3)、NumPy使用了被优化过的C API,因此计算速度有了很大的提升。

这里先介绍三种,NumPy数组其他优势会陆续介绍。

3、IPython会话

创建数组过程中的会话方式是什么?

IPython会话

何为IPython会话?

一种以IPython作为交互式的Shell工具。

关于该交互式的说明:IPython:一个交互式 shell 工具,科学家和工程师都喜欢做实验,而IPython正是诞生于爱做实验的科学家之手。查看更多信息,访问地址为http://ipython.org/

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第2张

安装ipython命令:cmd 输入以下其中一条命令

pip install ipython[all]

easy_install ipython

python -m pip install ipython[all]

出现Successfully即为安装成功

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第3张

IPython会话方式是什么?

网页窗口访问或本地终端访问,访问命令:ipython或 ipython notebook

如果出现以下的情况,就需要调整环境变量。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第4张

由于我已经在D盘中安装了Anaconda3,所以只需要在系统变量中输入一些地址就可以了

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第5张

第一种会话方式:cmd + ipython notebook

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第6张

接着跳出网页,也就是网页版的ipython会话窗口,这样就可以使用了,我个人常使用网页版的,因为是随时可用保存代码的,并且优点也有很多,可以使用很多菜单栏功能,效率较高。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第7张

第二种会话方式:cmd + ipython

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第8张

补充说明:IPython是开源免费的软件,可以在Linux、Unix、Mac OS X以及Windows上使用。

IPython的基本功能:

Tab键自动补全;

历史记录存档;

行内编辑;

使用 %run 可以调用外部Python脚本;

支持系统命令;

支持pylab模式;

Python代码调试和性能分析。

如果在pylab模式下,IPython将自动导入 SciPy 、 NumPy 和 Matplotlib 模块,这样就省去了很多麻烦。否则,在每次会话的时候,我们都只能手动导入每一个所需模块,这样也挺麻烦的。

今后学习数据分析我们主要使用以上的ipython工具。

4、获取数组类型、形状

从开篇提到的arange()应用中,这里我们可使用dtype判断其数组类型。

何为形状?

对于数组而言,除了知道其类型以外,还有知道数组的shape形状,也就是数组的元素个数和构造数组的元素(也就是数组里面的值)。

备注:shape属性是一个元组,存放的是数组在每一个维度的长度。

例子:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第9张

由图可知,向量有5个元素(长度为5),值为0到4,类型为整型32位(这主要原因是我使用的是家里的32位电脑,64位的电脑在我工作的地方,如果你用的是64位,那么结果就是int(64))。

当然,如果你想导入模块也可以,只是太麻烦了,我在前面已经说过来。如果你根本没有安装ipython,那么你可能就学得比较累了,下面的这个就是多此一举。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第10张

5、多维数组的创建

开篇的例子中我们知道如何创建向量的方法那么如何创建多维数组呢?多维数组——顾名思义就是比向量多了行或者列的矩阵而已,其实向量也是矩阵的一种。在数学中,m乘n的矩阵形式(特别地,当m=n时,A为方阵。):

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第11张

关于矩阵的数学知识,我们在讲到数据分析的线性方程部分时再详细说明。

ipython会话窗口代码如下:

2阶矩阵:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第12张

显示数组的形状和类型:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第13张

5阶(维)矩阵(数组):

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第14张

注意:上述利用array()函数创建数组时,该数组是以列表为传递形式的对象,所以这个对象还必须是数组类型。前面已经提到了,这是NumPy数组中的一种优势,切记勿忘。

6、数组元素的选择

先来分析矩阵的位置,在数学中矩阵的元素位置就是元素的小标(从1开始),比如刚刚矩阵A中的

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第15张

表示的就是矩阵A的第3行第2列位置的元素,很明显,下标决定位置。但是,在数组中,下标的规定是从0开始的,因此,从数组的角度来看,矩阵A的所有元素在数组中的位置只需要在矩阵下标的基础上减去1即可。那么这里的a32的位置在数组中的实际位置就是a21.

元素如何选择?

其实就是把数组里的元素按照指定的位置输出即可。代码如下:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第16张

当然,也可以不使用arange()函数生成指定的列表作为数组的对象,我们还可以创建元素不一样的数组,这就是手动填写列表了。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第17张

7、NumPy 数据类型

说到数据类型大家学过C语言、matlab编程、零基础Python都会有所印象或者熟悉,因此这里我只做简单的概括,如果对数据类型不了解的朋友,请翻阅相关书籍资料查看。

Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy添加了很多其他的数据类型:

范围的说明:(计算机组成原理的知识点)

int8:数字代表二进制位数,因此该数据类型为8位的而进制数,最大值是8个1,转换为十进制正好是255,因此下标的范围是8位的都是以长度为255的区间来进行划分的,其他依次类推。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第18张

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第19张

每一种数据类型均有对应的类型转换函数:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第20张

注意:复数是不能转换为整数的,同样,复数也不能转换为浮点数。不过,浮点数却可以转换为复数,公式为complex(real, Im)和complex(real.Im),例如 : (注:单个的数字默认为实部,虚部为0)

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第21张

8、数据类型对象

何为对象? 数据类型对象是 numpy.dtype 类的实例(可以类似理解为函数中实例化对象,不过有区别哟!)。此外,数据类型对象可以给出单个数组元素在内存中占用的字节数,即 dtype 类的 itemsize 属性:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第22张

每日三道题, 笔试面试不吃亏:

题目24:打印出菱形:

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第23张

题目25:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前40项之和。

程序分析:请抓住分子与分母的变化规律。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第24张

题目26:(阶乘题)0!+1!+2!+3!+...+50!的和。

程序分析:此程序只是把累加变成了累乘。

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第25张

扫码关注我,一起交流学习

2020年数据分析必知必会(一):NumPy数组_https://bianchenghao6.com/blog__第26张

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复