gpt4 book ai didi

python - 将 np.int8 数组与 127 相乘会根据平台产生不同的 numpy 数组类型

转载 作者:太空狗 更新时间:2023-10-29 16:55:59 25 4
gpt4 key购买 nike

以下代码:

>>> import numpy as np
>>> np.arange(2).astype(np.int8) * 127

为 numpy 1.13.3 生成

# On Windows
array([0, 127], dtype=int16)
# On Linux
array([0, 127], dtype=int8)

但是,如果我将 127 更改为 126,两者都会返回一个 np.int8 数组。如果我将 127 更改为 128,两者都会返回一个 np.int16 数组。

问题:

  • 这是预期的行为吗?
  • 为什么这一个案例的两个平台不同?

最佳答案

这是由于 NumPy issue 5917 . < instead of <= 造成np.can_cast(127, np.int8)为 False,因此 NumPy 对 127 使用了太大的 dtype。操作系统依赖性是因为 C long 在 Linux 和 Windows 上具有不同的大小,并且一些 NumPy 代码路径取决于 C long 的大小。

A fix已发布于NumPy 1.14.0 .至少更新到 NumPy 1.14.0 后,您应该会看到 int8 的 dtype。在所有平台上。

关于python - 将 np.int8 数组与 127 相乘会根据平台产生不同的 numpy 数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47681799/

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