如何在numpy select函数中设置else默认条件
解决方案
numpy 的 np.select() 原生就支持你要的「else 分支」功能,只需要使用它的可选参数 default 即可:所有前面列出的条件都不匹配的元素,会统一返回 default 指定的值,完全不需要手动写兜底的排除条件。
针对你给出的示例,修改后代码如下:
import numpy as np arr = np.arange(24) # 只需要写非兜底的前置条件即可 cond = [arr <= 10] choices = ['A'] # default参数对应else分支返回值 result = np.select(cond, choices, default='B') print(result)
运行结果和你原来的写法完全一致。
当存在多条件的时候,这个写法的优势会更明显,比如你需要设置3个前置判断条件,只需要把三个条件和对应返回值列在cond和choices里,所有未匹配的情况都走default,不用再手动写~(cond1 | cond2 | cond3)这种复杂的兜底条件,既减少代码量也避免逻辑出错。
多条件场景示例:
cond = [ arr <= 5, (arr > 5) & (arr <= 10), (arr > 10) & (arr <= 20) ] choices = ['C', 'A', 'D'] # 大于20的所有元素统一返回B result = np.select(cond, choices, default='B')
内容的提问来源于stack exchange,提问作者Vesper
相关产品推荐
相关产品推荐

