np.where(cond,x,y)函数

今天在看特征提取的代码时遇到了np.where()函数,一脸懵逼,查了资料并没有发现什么有价值的内容。

知乎上逛了一圈略有收获。记录下来

np.where(condiction,x,y)这个函数的三个输入参数分别是条件(可以是矩阵),x,y数值矩阵用于返回值的选取:

语法类似于三元表达式x if condiction else y,当条件为真的时候返回x的值,条件为假时返回y的值。

光说不练假把式,没图说个金币


可以看到:np.where的语法类似[(x if condiction else y) for x,y,condiction in zip(x,y,condiction)]

这个又涉及到了zip的操作。取出各个列表(矩阵,元组)中对应位置的元素,组成新的元组,zip结果如下图:


这里设置condiction为cond = np.array([True,False,True])

满足Ture的时候取出上图的1.1,2.2.3.3中对应的数,这里可以看到zip后的元组,第一组的条件是Ture,所以取到x的第一个数1.1

然后是第二组,条件是False,所以会取到y,对应的是有False元素的那个元组,对应的元素是3.3(这里是3.299999...8);

然后是第三组,同理会取到第三个元组的第一个元素3.3(这里是3.299999...8)。

那么,np.where(condiction,x,y)返回的结果



两者是一样的。

不知道这样子讲各位是不是都清楚了。。

猜你喜欢

转载自blog.csdn.net/qq_21210467/article/details/80420544