104、将条件逻辑表述为数组运算

      numpy.where函数是三元表达式 x if condition else y 的矢量化版本。假设有一个布尔数组和两个数值数组:

104、将条件逻辑表述为数组运算_第1张图片
图片发自App

      假设我们要根据cond中的值选取xarr和yarr的值:当cond中的值为True时,选取xarr的值,否则从yarr中选取。

104、将条件逻辑表述为数组运算_第2张图片
图片发自App

      使用纯python做法会存在几个问题。一:它对大数组的处理速度不是很快;二:无法用于多维数组。

      若使用np.where做法则程序简洁并且能改善上面提到的问题,使用np.where做法如下:

104、将条件逻辑表述为数组运算_第3张图片
图片发自App

      在数据分析工作中,where通常用于根据另一个数组而产生一个新的数组。

假设有一个由随机数据组成的矩阵,把所有正值替换为2,将所有负值替换为-2。

使用np.where实现:

104、将条件逻辑表述为数组运算_第4张图片
图片发自App

      假设现在有两个布尔型数组cond1和cond2,希望根据4种不同的布尔值组合实现不同的赋值操作:

104、将条件逻辑表述为数组运算_第5张图片
图片发自App

        在上面的例子中,我们还可以把 布尔值当做0或1处理,例如

104、将条件逻辑表述为数组运算_第6张图片
图片发自App

你可能感兴趣的:(104、将条件逻辑表述为数组运算)