numpy实现数组条件赋值:新增输入A的阈值判断将B设为固定常量
实现方案
你当前的代码用了数组布尔索引,默认是基于NumPy数组实现的场景,直接在初始B值计算完成后新增针对A数组的条件赋值即可。如果需要新增的A元素判断优先级高于原有B值范围限制,将新增的逻辑放在原有范围截断代码之前即可。
NumPy数组版本(适配你原有的代码写法)
def funcB(A, C1, C2): B = (0.381*A) + (0.05*(C1/C2)) - 0.15 # 新增针对A的判断逻辑 B[A < 1.64] = 0.5 B[A > 3.3] = 1.0 # 原有B值范围截断逻辑 B[B > 1.0] = 1.0 B[B < 0.5] = 0.5 return B
普通Python列表版本(无NumPy依赖场景)
如果你输入的A是原生Python列表,不需要依赖第三方库,可以用遍历实现:
def funcB(A, C1, C2): res = [] c_part = 0.05 * (C1 / C2) - 0.15 for a_item in A: if a_item < 1.64: res.append(0.5) continue if a_item > 3.3: res.append(1.0) continue b_val = 0.381 * a_item + c_part # 原有范围限制 if b_val > 1.0: b_val = 1.0 elif b_val < 0.5: b_val = 0.5 res.append(b_val) return res
内容的提问来源于stack exchange,提问作者8556732
相关产品推荐
相关产品推荐

