gpt4 book ai didi

python - 比较集合和元组中的 Numpy dtypes?

转载 作者:行者123 更新时间:2023-12-04 15:12:03 27 4
gpt4 key购买 nike

所以,我遇到了一个奇怪的问题,即查看一个集合是否包含一个 Numpy dtype 对象与查看一个元组是否包含一个会给出不同的结果:

In [1]: x = np.zeros(8)

In [2]: x.dtype
Out[2]: dtype('float64')

In [3]: x.dtype in (np.float32, np.float64)
Out[3]: True

In [4]: x.dtype in {np.float32, np.float64}
Out[4]: False

为什么会这样?在查看 numpy.dtype 对象时,是什么阻止了 set().__contains__() 返回 True

最佳答案

检查集合中的成员资格使用 __hash__() 而不是 __eq__()。在这种情况下,事实证明对象彼此相等但生成不同的哈希值:

In [1]: np.float64 == np.dtype(np.float64)
Out[1]: True

In [2]: hash(np.float64)
Out[2]: 8793996338852

In [3]: hash(np.dtype(np.float64))
Out[3]: -7365930899603730638

关于python - 比较集合和元组中的 Numpy dtypes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65045713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com