开发者学堂课程【高校精品课-华东师范大学 - 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。
执行完以后得到的是一个布尔值,那么如果元素是大于0的话就True,否则就是false。
② np . where 函数, arr 大于0。然后就是取2,否则就是-2。大于0的那个元素就是True的地方,就是取-2。
③可以结合这个标量和数组,那比如说只把整数变成2,其他的数字不变。
np . where ( arr ),arr大于0的话就是2。否则还是原来的 arr ,注意这样一个表达方法。
执行:
大于0的值是2,否则还是原来那个值。这种在经常做数据的各种筛选处理里面经常用到,所以这是一个numpy强大的地方