Python3借助numpy实现含布尔运算的向量方程计算方法
NumPy实现含布尔条件的向量运算方案
你需要的逐元素布尔判断运算可以通过NumPy的向量化特性直接实现,和R的运算逻辑完全对齐,实现代码如下:
import numpy as np # 定义输入向量 a = np.array([0, 1, 2, 3, 4, 5]) b = np.array([1, 1, 2, 2, 3, 3]) # 执行对应运算,注意布尔判断部分需要加括号明确运算优先级 res = a - b + 5 * ((a == 0) | (b == 0)) # 输出结果 print(res)
运行后输出结果为 [4 0 0 1 1 2],和你提供的R代码运行结果完全一致。
注意事项
- Python中位运算符
|的优先级低于比较运算符,因此必须把a==0、b==0两个比较逻辑分别用括号包裹,否则会出现运算顺序错误。 - 如果你需要更高的可读性,也可以用
np.where实现等价逻辑:res = a - b + np.where((a == 0) | (b == 0), 5, 0)
内容的提问来源于stack exchange,提问作者Ioanna K.
相关产品推荐
相关产品推荐

