Numpy向量化逻辑给出意外输出

ia2d9nvy  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(117)

我可以发誓这应该是返回三行符合逻辑,我不能为我的生活弄清楚为什么只有一个回来.有人能解释一下吗?

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]]

不知道吗?

dojqjjoe

dojqjjoe1#

我想你的意思是:

x = ((data[:, 0] + data[:, 1])==target_sum) | (data[:, 0] ==7)

注意括号的位置。
如doc中所述:* 与C不同,Python中的所有比较操作都具有相同的优先级,低于任何算术 *。这意味着a | b == c被计算为(a | b) == c,而不是a | (b==c)

相关问题