不可不学Numpy,带你快速撸Numpy代码,(Python学习教程)一遍过

简介: 不可不学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学习教程会继续为大家更新!大家哪里有不清楚的地方可以留言或者私信!

相关文章
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
291 1
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
158 1
|
1月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
245 2
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
137 0
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
232 100
|
1月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
116 1
|
1月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
134 4
|
3月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
344 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
336 0

热门文章

最新文章

推荐镜像

更多
下一篇
oss云网关配置