关于Numpy中np.logical_or()运算结果不符预期的技术问询
问题解析:NumPy logical_or 运算结果与预期不符的原因
我们一步步拆解代码和运算逻辑,找出问题所在:
1. 明确数组元素的索引对应关系
你的数组定义为:
x = np.array([9, 5]) # x[0] = 9,x[1] = 5 y = np.array([16, 12]) # y[0] = 16,y[1] = 12
NumPy的逐元素运算(包括np.logical_or)是按相同索引位置的元素配对计算,而非交叉配对。
2. 分步计算每个条件数组
计算
x < 5:- x[0] = 9 → 9 < 5 → False
- x[1] = 5 → 5 < 5 → False
- 结果:
array([False, False])(这部分你的计算是对的)
计算
y > 15:- y[0] = 16 → 16 > 15 → True
- y[1] = 12 → 12 > 15 → False
- 结果:
array([True, False])(这部分你的计算也没错)
3. 执行np.logical_or的逐元素运算
np.logical_or会将两个输入数组中相同索引的元素进行逻辑或运算:
- 索引0的运算:
False (x<5[0]) or True (y>15[0])→ True - 索引1的运算:
False (x<5[1]) or False (y>15[1])→ False
最终结果自然是array([True, False]),和实际运行结果一致。
你的预期错误点
你错误地将索引1的运算配对成了False (x<5[1]) or True (y>15[0]),也就是交叉使用了不同索引的元素,导致预期结果顺序颠倒。记住NumPy的逐元素运算始终是同索引元素配对,这是数组运算的核心规则之一。
内容的提问来源于stack exchange,提问作者Luki_DataScience
相关产品推荐
相关产品推荐

