【发布时间】:2019-08-19 01:05:19
【问题描述】:
我会假设:
import numpy as np
a = np.array(["a", "b", "c"])
print(a == "abc")
print("abc" == a)
输出
[False False False]
False
,因为后面的比较应该使用字符串相等的定义,而前者应该使用 NumPy 数组的相等定义。
真正的输出是:
[False False False]
[False False False]
为什么会发生这种情况[1]以及如何防止它[2]?
[1] 即为什么是str.__eq__NotImplemented?
[2] 即如果 np.ndarray.__eq__ 不被实现,如何调用执行的相等检查?
[编辑] 这个问题被标记为可能与comparing a string 1-d numpy array elementwise 重复,但事实并非如此,因为那里提出了完全相反的问题(基本上如何使用np.ndarray.__eq__),而且 [1] 和 [2] 都不是都讨论过了。
【问题讨论】:
标签: python python-3.x operators equality