numpy.where函数是三元表达式 x if condition else y 的矢量化版本。假设有一个布尔数组和两个数值数组:
图片发自简书App
假设我们要根据cond中的值选取xarr和yarr的值:当cond中的值为True时,选取xarr的值,否则从yarr中选取。
图片发自简书App
使用纯python做法会存在几个问题。一:它对大数组的处理速度不是很快;二:无法用于多维数组。
若使用np.where做法则程序简洁并且能改善上面提到的问题,使用np.where做法如下:
图片发自简书App
在数据分析工作中,where通常用于根据另一个数组而产生一个新的数组。
假设有一个由随机数据组成的矩阵,把所有正值替换为2,将所有负值替换为-2。
使用np.where实现:
图片发自简书App
假设现在有两个布尔型数组cond1和cond2,希望根据4种不同的布尔值组合实现不同的赋值操作:
图片发自简书App
在上面的例子中,我们还可以把 布尔值当做0或1处理,例如
图片发自简书App