随笔记录(扩展)——np.where

where基本使用
15.1、使用where 按照条件查询出两个字段的值
xarr = np.array([1, 2, 3, 4, 5])

yarr = np.array([-1, -2, -3, -4, -5])

cond = np.array([True, False, True, False, False])

np.where(cond, xarr, yarr)
Out[174]: array([ 1, -2,  3, -4, -5])
15.2、使用where在原有的array中填充常数
arr = np.random.randn(4, 4)

arr
Out[176]: 
array([[ 1.2961233 , -2.88646621,  0.93438555, -1.25265235],
       [ 0.48880916,  0.42995708, -0.64266328,  0.78978925],
       [ 0.45636547, -0.73146585,  1.4273524 , -0.35658024],
       [-0.33206549, -0.43699776, -1.3090687 , -0.22809868]])

np.where(arr > 0, 2, 4)
Out[178]: 
array([[2, 4, 2, 4],
       [2, 2, 4, 2],
       [2, 4, 2, 4],
       [4, 4, 4, 4]])

也可以将标量和数组联合:

np.where(arr > 0, 2, arr)
Out[179]: 
array([[ 2.        , -2.88646621,  2.        , -1.25265235],
       [ 2.        ,  2.        , -0.64266328,  2.        ],
       [ 2.        , -0.73146585,  2.        , -0.35658024],
       [-0.33206549, -0.43699776, -1.3090687 , -0.22809868]])
where扩展使用
15.3、使用where 查询出符合条件的值的位置
x = np.arange(9.).reshape(3, 3)

x
Out[12]: 
array([[0., 1., 2.],
       [3., 4., 5.],
       [6., 7., 8.]])

np.where( x > 5 )
Out[13]: (array([2, 2, 2]), array([0, 1, 2]))

np.where( x > 4 )
Out[14]: (array([1, 2, 2, 2]), array([2, 0, 1, 2]))

x[np.where(x > 4)]
Out[15]: array([5., 6., 7., 8.])
15.4、获取bool矩阵中True的位置
goodvalues = [3, 4, 7]

ix = np.isin(x, goodvalues)

ix
Out[18]: 
array([[False, False, False],
       [ True,  True, False],
       [False,  True, False]])

np.where(ix)
Out[19]: (array([1, 1, 2]), array([0, 1, 1]))

参考:https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.where.html
暂时完结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值