Numpy数组整数/浮点除法

Seb*_*ian 12 python arrays numpy

我发现Python/numpy中的以下行为有点奇怪:

In [51]: a = np.arange(10, 20)
In [52]: a = a / 10.0
In [53]: a
Out[53]: array([ 1. ,  1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9])

In [54]: a = np.arange(10, 20)
In [55]: a /= 10.0
In [56]: a
Out[56]: array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
Run Code Online (Sandbox Code Playgroud)

我觉得a=a/10.0并且a/=10.0应该返回相同的结果.这是否有意并在某处记录?

Ash*_*ary 18

问题a /= 10.0在于它修改了数组,并且它不会更改数组的dtype,因此所有浮点数都将转换为整数.另一方面a = a / 10.0创建了一个新数组,如果正在创建一个新数组,则可以更改该类型.

来自docs:

请注意,如果将较高类型分配给较低类型(如浮点数到整数)或甚至异常(将复数分配给浮点数或整数),则赋值可能会导致更改: