numpy.where

numpy.where函数是三元表达式的向量形式

三元表达式
x=a if b else c

如果b为真,则x=a,如果b为假,则x=c。

如下

In [45]: xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])

In [46]: yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])

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

In [48]: [(x if c eles y) for x,y,c in zip(xarr,yarr,cond)]
Out[48]: [1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]
np.where
In [49]: np.where(cond,xarr,yarr)
Out[49]: array([ 1.1,  2.2,  1.3,  1.4,  2.5])

数据分析中where的典型用法是根据另外的array,产生一个新的array。其中的第二个或者第三个参数没必要都是array也可以是非向量的值。

In [147]: arr = np.random.randn(4, 4)

In [148]: arr
Out[148]: 
array([[ 0.6372, 2.2043, 1.7904, 0.0752],
 [-1.5926, -1.1536, 0.4413, 0.3483],
 [-0.1798, 0.3299, 0.7827, -0.7585],
 [ 0.5857, 0.1619, 1.3583, -1.3865]])

In [149]: np.where(arr > 0, 2, -2)#可以两个都是数值
Out[149]: 
array([[ 2, 2, 2, 2],
 [-2, -2, 2, 2],
 [-2, 2, 2, -2],
 [ 2, 2, 2, -2]])

In [150]: np.where(arr > 0, 2, arr) # 可以一个数值,一个向量。当然,也可以是两个都是向量。如第一个列子
Out[150]: 
array([[ 2. , 2. , 2. , 2. ],
 [-1.5926, -1.1536, 2. , 2. ],
 [-0.1798, 2. , 2. , -0.7585],
 [ 2. , 2. , 2. , -1.3865]])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值