NumPy类型(不)一致性问题?

5
在Numpy中,我尝试了以下内容。我怀疑这不是一个错误。如果这是一项功能,我不理解它。有人可以解释一下吗?谢谢。
>>> np.array([173], dtype = np.uint8) * [360]
array([62280])
>>> np.array([173], dtype = np.uint8) * 360
array([-3256], dtype=int16)
>>> 

我在两种情况下都得到了 array([62280], dtype=uint16)。在Ubuntu上使用的是Numpy 1.8.1版本。 - Ashwini Chaudhary
1
在Windows上使用numpy 1.8.1和Python 2.7.6的两种情况下,都会得到array([62280], dtype=uint16) - Flavian Hautbois
无法复制,也无法使用1.9.0进行。 - Padraic Cunningham
似乎有一个错误。我使用的是NumPy 1.6.2版本,这是Debian 7(Wheezy)上的标准包。仍然有一个问题,为什么结果不是int64或int32。感谢您的回答。 - Georg Michel
@simonzack 因为它正在创建一个新的数组,尝试:arr = np.array([173], dtype = np.uint8); arr *= [360] - Ashwini Chaudhary
显示剩余7条评论
1个回答

1
这些输出结果的差异很可能是由于您的 numpy 版本存在 bug。
代码:
np.array([173], dtype = np.uint8) * [360]

是以下缩写:

np.array([173], dtype = np.uint8) * np.array([360])
# output array([62280])

因此,[360] 被转换为 dtype=int 的 numpy 数组。乘法取最高精度,因此返回一个具有 int 精度的数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接