Numpy数组整数/浮点除法

时间:2014-02-13 13:08:36

标签: 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])

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

1 个答案:

答案 0 :(得分:17)

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

来自docs

  

请注意,如果指定更高的类型,分配可能会导致更改   降低类型(如浮动到整数)甚至异常(分配   复杂到浮点数或整数):