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天前
|
索引 Python
NumPy 数组迭代与合并详解
NumPy 数组迭代包括基本和高级方法。使用 `for` 循环可迭代一维、二维及多维数组。`np.nditer()` 提供更多控制,如迭代顺序、过滤、类型转换和步长。`np.ndenumerate()` 返回元素及其索引。练习涉及合并数组操作。
8 0
|
1天前
|
Python
NumPy 数组复制与视图详解
NumPy 的复制和视图用于创建新数组。复制创建独立于原数组的新数组,如 `arr.copy()`、`np.array(arr)` 和 `arr[:]`。视图则是原始数组的引用,修改会影响原数组,如 `arr.view()`、切片和 `arr.reshape()`。使用 `arr.base` 可检查数组是否为视图。练习:创建数组 `arr` 并用三种方法创建副本,验证它们是否独立。
17 0
NumPy 数组复制与视图详解
|
1天前
|
存储 索引 Python
NumPy 数组切片及数据类型介绍
了解 NumPy 数组切片,用于从数组中提取子集。一维数组切片使用 `start:end:step`,如 `arr[1:5]`。二维数组切片如 `arr[1:3, 0:3]`。创建 5x5 数组并练习切片,例如打印第一行、第二列、对角线元素和 2x2 子数组。别忘了检查数据类型,如 `arr.dtype`,并使用 `astype()` 转换类型。
23 0
|
1天前
|
存储 索引 Python
NumPy 数组创建方法与索引访问详解
NumPy 的 `ndarray` 是其核心数据结构,可通过 `array()`、`zeros()`、`ones()` 和 `empty()` 函数创建。`array()` 可以将列表等转换为数组;`zeros()` 和 `ones()` 生成全零或全一数组;`empty()` 创建未定义值的数组。此外,还有 `arange()`、`linspace()`、`eye()` 和 `diag()` 等特殊函数。练习包括使用这些函数创建特定数组。
116 1
|
1天前
|
存储 数据挖掘 API
【NumPy基础】- Numpy数组和矢量计算
【NumPy基础】- Numpy数组和矢量计算
|
1天前
|
机器学习/深度学习 测试技术 数据处理
Numpy Tile:数组复制的艺术与效率之键
【4月更文挑战第21天】
21 0
|
1天前
|
存储 数据采集 数据处理
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
33 1
《Numpy 简易速速上手小册》第6章:Numpy 高级数组操作(2024 最新版)
|
1天前
|
存储 机器学习/深度学习 数据处理
NumPy:从初识到实战,探索Python科学计算的无限可能
NumPy:从初识到实战,探索Python科学计算的无限可能
38 0
|
1天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。
|
1天前
|
存储 索引 Python
请解释Python中的NumPy库以及它的主要用途。
【2月更文挑战第27天】【2月更文挑战第97篇】请解释Python中的NumPy库以及它的主要用途。