不可不学Numpy,带你快速撸Numpy代码,(Python学习教程)一遍过
我们一起来学习Python数据分析的工具学习阶段,包括Numpy,Pandas以及Matplotlib,它们是python进行科学计算,数据处理以及可视化的重要库,在以后的数据分析路上会经常用到,所以一定要掌握,并且还要熟练!今天的Python学习教程先从Numpy开始!
本文目标
初识Numpy
- ndarray的增删改查
- ndarray切片与筛选
- ndarray运算与排序
NumPy 简介
NumPy 是 Numerical Python 的简称,它是 Python 中的科学计算基本软件包。NumPy 为 Python 提供了大量数学库,使我们能够高效地进行数字计算。更多可点击Numpy官网查看。
其实在前面的Python学习教程中就有跟大家讲过Numpy!
关于Numpy需要知道的几点:
- NumPy 数组在创建时有固定的大小,不同于Python列表(可以动态增长)。更改ndarray的大小将创建一个新的数组并删除原始数据。
- NumPy 数组中的元素都需要具有相同的数据类型,因此在存储器中将具有相同的大小。数组的元素如果也是数组(可以是 Python 的原生 array,也可以是 ndarray)的情况下,则构成了多维数组。
- NumPy 数组便于对大量数据进行高级数学和其他类型的操作。通常,这样的操作比使用Python的内置序列可能更有效和更少的代码执行。
所以,Numpy 的核心是ndarray对象,这个对象封装了同质数据类型的n维数组。起名ndarray 的原因就是因为是 n-dimension-array 的简写。接下来本节所有的课程都是围绕着ndarray来讲的,理论知识较少,代码量较多,所以大家在学习的时候,多自己动动手,尝试自己去运行一下代码。
不可不学Numpy,带你快速撸Numpy代码,(Python学习教程)一遍过
创建ndarray
由python list创建
由numpy内置函数创建
访问、删除、增加ndarray中的元素
这里主要是提供了一些访问、更改或增加ndarray中某一元素的基础方法。
访问&更改
类似于访问python list中元素的方式,按照元素的index进行访问或更改。
删除
可使用np.delete(ndarray, elements, axis)函数进行删除操作。
这里需要注意的是axis这个参数,在2维数据中,axis = 0表示选择行,axis = 1表示选择列,但不能机械的认为0就表示行,1就表示列,注意前提2维数据中。
在三维数据中,axis = 0表示组,1表示行,2表示列。这是为什么呢?提示一下,三位数组的shape中组、行和列是怎样排序的?
所以,axis的赋值一定要考虑数组的shape。
再有一点需要注意的是,如果你想让原数据保留删除后的结果,需要重新赋值一下才可以。
增加
往ndarray中增加元素的办法跟python list也很类似,常用的有两种:
一种是添加(append),就是将新增的元素添加到ndarray的尾部
语法为:np.append(ndarray, elements, axis)
参数和delete函数一致,用法也一致,这里不再赘述
一种是插入(insert),可以让新增元素插入到指定位置
语法为:np.insert(ndarray, index, elements, axis)
参数中就多了一个index,指示的是插入新元素的位置。
这里值得注意的是,不论是append还是insert,在往多维数组中插入元素时,一定要注意对应axis上的shape要一致。再一个就是,和delete一样,如果你想要更改原数据,需要重新赋值。
切片和筛选
ndarray切片
前面学了选择ndarray中的某个元素的方法,这里我们学习获取ndarray子集的方法——切片。
对于切片大家并不陌生,在list里面我们也接触过切片,一维的ndarray切片与list无异。需要注意的是,就是理解2维及多维ndarray切片。
2维矩阵切片
这里可以看出,我们筛选了a矩阵中前三列的所有行,这是如何实现的呢?
切片的第一个元素:表示的是选择所有行,第二个元素:-1表示的是从第0列至最后一列(不包含),所以结果如上所示。
再看一个例子:
筛选的是第2-3行的所有列。
一个常用的切片
以列的形式获取最后一列数据:
以一维数组的形式获取最后一列数据:
上面两种方法经常会用到,前者的shape为(4,1),后者为(4,)。
ndarray筛选
选择ndarray的对角线
所用函数为np.diag(ndarray, k=N),其中参数k的取值决定了按照哪一条对角线选择数据。
默认k = 0,取主对角线;
k = 1时,取主对角线上面1行的元素;
k = -1时,取主对角线下面1行的元素。
思考:这个函数只能选择主对角线上的元素,那如果想要获取副对角线上的元素呢?
尝试自己搜索一下关键词numpy opposite diagonal寻找答案。
不建议你直接点getting the opposite diagonal of a numpy array。
提取ndarray中的唯一值
所用函数为np.unique(ndarray),注意unique也可以添加参数axis来控制评判唯一值的轴方向,不好理解可以看示例:
通过布尔运算筛选
这里在中括号中添加筛选条件,当该条件的结果为True时(即满足条件时),返回该值。
这里需要注意的是,当输入多个筛选条件时,&表示与,|表示或,~表示非。
运算与排序
ndarray运算
集合运算
算术运算
我们可以通过+、-、*、/或np.add、np.substract、np.multiply 、np.divide来对两个矩阵进行元素级的加减乘除运算,因为是元素级的运算,所以两个矩阵的shape必须要一致或者是可广播(Broadcast)。
这里所谓的可广播,就是指虽然A和B两个矩阵的shape不一致,但是A可以拆分为整数个与B具有相同shape的矩阵,这样在进行元素级别的运算时,就会先将A进行拆分,然后与B进行运算,结果再组合一起就可以。这里的A就是“可广播”矩阵。
上面涉及到的乘法是元素对应相乘,也就是点乘,那矩阵的叉乘呢?可以了解下numpy.matmul函数。
ndarray排序
我们使用np.sort()和ndarray.sort()来对ndarray进行排序。
相同的是:
二者都可以使用参数axis来决定依照哪个轴进行排序,axis = 0时按照列排序,axis = 1时按照行排序;
不同的是:
np.sort()不会更改原数组;ndarray.sort()会更改原数组。
更多的Python学习教程会继续为大家更新!大家哪里有不清楚的地方可以留言或者私信!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于php mysqli函数的一些总结及实例(三)
前言:php是一门入门比较简单的编程语言,同时php有非常多的内置函数。所以对于这些内置函数的理解与掌握就显得尤为重要。接下来我们就分析php的一些内置函数。后续我还会继续为大家整理。 关于phpMysqli函数的理解: 一、什么是php mysqli? php mysqli = php nysqli improved mysqli函数允许您访问数据库服务器。 注意!mysqli扩展用于mysqli4.1.13版本或者更新的版本。 二、如何使用mysqli函数? 如果要使用mysqli函数则必须在编译php时添加对mysqli扩展的支持。 有关安装的详细信息,请访问:http://www.php.net/manual/en/mysqli.installation.php 有关运行配置的详细信息地址:http://www.php.net/manual/en/mysqli.configuration.php 三、php相关函数介绍 1、mysqli_change_user(connection,username,password,newdbname) 描述:更改连接的数据库 实例:2、my...
- 下一篇
Python学习教程:Python的cors跨域模块主要做了什么?
在当下web开发环境下,前后端分离开发是一个比较主流的架构模式。那么因为不再是模板化开发,以至于前后端有可能不在一个域下(即服务器的域名是www.a.com, 客户端域名是 www.b.com),这就造成了 浏览器跨域禁止的问题。 Python学习教程:Python的cors跨域模块主要做了什么? 实际上对于前端也有很多的跨域的解决方案。那么其中一种当下也比较主流的方式是在后端开启cors。在我们python 的 web框架中, django,flask,tornado 都有各自的cors的库来处理跨域的问题。但这些cors具体做了什么呢?我们今天的Python学习教程就来跟大家剖析一下 就像我们知道的,在一次http请求中包含有headers头信息,大家都是了解的,那么在浏览器首次通过options进行访问的会后,会由浏览器返回一些header信息来判断是否允许访问,那么在后端setheader的时候添加了一些允许信息,那么他们分别都是什么呢?我们今天给大家介绍最主要的一些键值对: 'Access-Control-Allow-Origin:' 该key是代表允许访问的域名,当前dem...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境