是否存在无需显式类型检查的Numpy函数替代自定义索引选择函数?
用Numpy官方函数替代自定义的np_ifelse函数
你自定义的np_ifelse实现的「根据布尔条件选择标量/数组结果」的功能,完全可以用Numpy内置的np.where()函数替代,它天然兼容标量和数组输入,不需要手动做类型检查,代码更简洁优雅。
np.where()的用法
np.where(condition, val1, val2)的逻辑和你自定义的函数完全一致:
- 当
condition是标量布尔值时,直接返回val1(若condition为True)或val2(若condition为False) - 当
condition是布尔数组时,返回一个和condition形状相同的数组,每个位置根据对应条件选择val1或val2
替代示例
直接用np.where()替换你的自定义函数即可,无需额外判断:
import numpy as np # 标量输入场景 ind_scalar = True v1 = 10.0 v2 = 20.0 print(np.where(ind_scalar, v1, v2)) # 输出:10.0 # 数组输入场景 ind_arr = np.array([True, False, True]) print(np.where(ind_arr, v1, v2)) # 输出:array([10., 20., 10.])
另外np.where()还支持更灵活的扩展场景:比如val1和val2也可以是和condition形状匹配的数组,实现逐元素的条件选择,功能比你自定义的函数更强大。
内容的提问来源于stack exchange,提问作者Aleksejs Fomins
相关产品推荐
相关产品推荐

