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)返回的结果



两者是一样的。

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

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值