我可以发誓这应该是返回三行符合逻辑,我不能为我的生活弄清楚为什么只有一个回来.有人能解释一下吗?
import numpy as np
data = np.array([[1, 2, 3],
[2, 5, 6],
[7, 8, 9],
[4, 3, 4]])
target_sum = 7
x = (((data[:, 0] + data[:, 1])==target_sum) | data[:, 0] ==7)
matching_rows = data[x]
print(matching_rows)
我的终端说:
[[7 8 9]]
但它肯定应该说:
[[2 5 6]
[4 3 4]
[7 8 9]]
不知道吗?
1条答案
按热度按时间dojqjjoe1#
我想你的意思是:
注意括号的位置。
如doc中所述:* 与C不同,Python中的所有比较操作都具有相同的优先级,低于任何算术 *。这意味着
a | b == c
被计算为(a | b) == c
,而不是a | (b==c)
。