gpt4 book ai didi

python - np.uint16 与 np.uint16 不同

转载 作者:行者123 更新时间:2023-12-04 00:00:18 30 4
gpt4 key购买 nike

我正在尝试使用字典查找将 numpy dtypes 映射到关联值。我观察到以下违反直觉的行为:

dtype = np.uint16
x = np.array([0, 1, 2], dtype=dtype)
assert x.dtype == dtype
d = {np.uint8: 8, np.uint16: 16, np.uint32: 32, np.float32: 32}
print(dtype in d) # prints True
print(x.dtype in d) # prints False

使用其他数据类型会产生类似的结果。

所以我们有那个 np.uint16 == x.dtype,但前者在字典的键中找到,而后者不在。任何解释和/或简单的解决方法将不胜感激。

最佳答案

Dtype 的工作方式并不像乍一看那样。 np.uint16 不是 dtype 对象。它只是可以转换为一个。 np.uint16 是一个类型对象,表示 array scalars 的类型uint16 dtype。

x.dtype 是实际的 dtype object , 和 dtype 对象以一种奇怪的方式实现 ==,这种方式不具有传递性,并且与 hash 不一致。当 other 还不是 dtype 时,dtype == other 基本上实现为 dtype == np.dtype(other)。您可以在 source 中查看详细信息.

特别是,x.dtype 比较等于 np.uint16,但它没有相同的哈希,所以 dict 查找找不到它。

关于python - np.uint16 与 np.uint16 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62646573/

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