Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将np.int8数组与127相乘会产生不同的numpy数组类型,具体取决于平台_Python_Arrays_Numpy - Fatal编程技术网

Python 将np.int8数组与127相乘会产生不同的numpy数组类型,具体取决于平台

Python 将np.int8数组与127相乘会产生不同的numpy数组类型,具体取决于平台,python,arrays,numpy,Python,Arrays,Numpy,以下代码: >>> 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数组 问题: 这

以下代码:

>>> 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
数组

问题:

  • 这是预期的行为吗
  • 为什么这一案例中的两个平台不同
    • 这是由于。A导致
      np.can\u cast(127,np.int8)
      为False,因此NumPy对127使用了太大的数据类型。操作系统依赖性是因为在Linux和Windows上,C long的大小不同,而一些NumPy代码路径依赖于C long的大小


      一份报告已于2004年发布。更新到至少NumPy 1.14.0后,您应该会在所有平台上看到
      int8
      的数据类型。

      这听起来像个bug。它在Windows上应该是np.int8。不知何故,
      numpy.can_cast(127,numpy.int8,casting='safe')
      在Windows上返回
      False