Numpy 数组导向编程 上|学习笔记

简介: 快速学习 Numpy 数组导向编程 上

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践Numpy 数组导向编程 上】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15376


Numpy 数组导向编程 上

 

主要是学这里面的第二个内容和第三个内容,第一个内容的话,大家在学习之前应该全部复习一遍,第4个内容比较简单,就是 Numpy 里面的数据怎么保存怎么加载。

条件表达式的操作

1、首先要加载 Numpy 这个包

2、条件表达式的操作

这个操作非常方便,它主要适用 Numpy 里面的一个 numpy . where 函数。能够返回一个叫做三相表达式,相当于是 x if condition else y ,在 Python 基础知识里面给大家提供的那个4个文件,然后给同学们讲到第三个就是Python范儿编程。所以那个内容的话,要复习一遍。这里有一个条件表达式的一个三相表达式的一个概念。

⑴这里创建一个 x,y 的一个数组,然后观察这个条件的比较, np . array 然后它里面的是True False True True False ,给了这样一个条件值。先运行一下,假设如果这个condition里面的为 True ,就去x数组里面找定值,否则是y数组里找定值。

如果要满足这个要求,怎么解决这个问题?可以用三相表达式来解决。注意看 x if c else y

这种语法表达式,这是一个三项表达式。如果 c 是处的话就 x ,否则就是 y 。注意这就放在一个中括号里面,它又是一个列表解析式。列表解析式在 for 前面的话应该是元素或者元素上的操作。然后 for 后面是 for in 遍历,就是在里面做迭代。然后 for 后面不一定是一个元素甚至三个元素。

上面涉及到 x 、 y 和 c ,所以 x 和 y 和 c  in zip 函数,花样传参就是拉链函数。然后是 x 这个数组, Y 这个数组,然后这个条件,三个数组里面对应的元素拉在一起构成一个元素就是一个小元组。那么 x y z 就可以比较了。如果 c 是真的话, True 那么就是 x 。取 x ,否则就是取 y 。

运行结果如下:第一个是 True ,所以显示1.1。第二个 False ,显示 y 是2.2。对应的看一下。

这就是 Numpy 强大的地方,可以利用这个 where 函数去实现刚刚上面的这个三相表达式的功能。刚刚是三相表达式,还没有用 where 。

⑵ where 函数

刚刚那个做法会有些问题的:首先对于很大的数组的话,因为上面的方法去比较会非常慢。然后对于一些多位数组可能不起作用。但用 numpy . where 函数的话就很方便。

直接用 numpy . where 。 where 里面跟三个参数,第一个是条件,然后两个是对应的数组。条件是真的话,就取第一个数组里面对应的元素,否则就是第二个数组里面对应的元素,形式很简洁。运行如下:

这个结果对照上面的结果,可以发现这个 where 的强大。因为在这个文本挖掘课里面讲的这个 Python 数据科学包。课程讲的就是提升部分,所以基础部分的话大家自行复习。

⑶ np.where 中第二个和第三个参数不用必须是数组。 where 在数据分析中一个典型的用法是是基于一个数组,产生一个新的数组值(例如上面的 result )。假设我们有一个随机数字生成的矩阵,我们想要把所有的正数变为2,所有的负数变为-2。用where的话会非常简单: numpy . where 。这个内容的话一定要记住的,在做数据分析、数据挖掘、文本挖掘里面。这是功能非常强大的。

⑷例子加深:

①建一个4行4列的随机数,也是一个 numpy 的 np . arr 。 numpy 的多维数组对象,然后让这个arr大于0。

image.gif执行完以后得到的是一个布尔值,那么如果元素是大于0的话就True,否则就是false。

image.gif② np . where 函数, arr 大于0。然后就是取2,否则就是-2。大于0的那个元素就是True的地方,就是取-2。

image.gif③可以结合这个标量和数组,那比如说只把整数变成2,其他的数字不变。

np . where ( arr ),arr大于0的话就是2。否则还是原来的 arr ,注意这样一个表达方法。

image.gif执行:

image.gif大于0的值是2,否则还是原来那个值。这种在经常做数据的各种筛选处理里面经常用到,所以这是一个numpy强大的地方

相关文章
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
300 0
|
11月前
|
计算机视觉 Python
PIL图像转换为Numpy数组:技术与案例详解
本文介绍了如何将PIL图像转换为Numpy数组,以便利用Numpy进行数学运算和向量化操作。首先简要介绍了PIL和Numpy的基本功能,然后详细说明了转换过程,包括导入库、打开图像文件、使用`np.array()`或`np.asarray()`函数进行转换,并通过打印数组形状验证转换结果。最后,通过裁剪、旋转和缩放等案例展示了转换后的应用,以及如何将Numpy数组转换回PIL图像。此外,还介绍了处理base64编码图像的完整流程。
432 4
|
索引 Python
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
NumPy库中`np.where`和逻辑运算函数`np.logical_and`、`np.logical_or`、`np.logical_not`的使用方法和示例。
871 1
Numpy学习笔记(三):np.where和np.logical_and/or/not详解
|
Python
Numpy学习笔记(四):如何将数组升维、降维和去重
本文介绍了如何使用NumPy库对数组进行升维、降维和去重操作。
242 1
|
Python
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
NumPy库中的`np.concatenate`和`np.append`函数,它们分别用于沿指定轴拼接多个数组以及在指定轴上追加数组元素。
679 0
Numpy学习笔记(五):np.concatenate函数和np.append函数用于数组拼接
|
PyTorch 算法框架/工具 Python
Pytorch学习笔记(十):Torch对张量的计算、Numpy对数组的计算、它们之间的转换
这篇文章是关于PyTorch张量和Numpy数组的计算方法及其相互转换的详细学习笔记。
324 0
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
152 0
|
3月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
369 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
3月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
345 0
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
327 1