我在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.0
和a/=10.0
会返回相同的结果。这是否有意并在某处记录?
答案 0 :(得分:17)
a /= 10.0
的问题在于它修改了数组,并且它不会更改数组的dtype,因此所有浮点数都将转换为整数。另一方面,a = a / 10.0
创建了一个新数组,如果正在创建一个新数组,则可以更改该类型。
来自docs:
请注意,如果指定更高的类型,分配可能会导致更改 降低类型(如浮动到整数)甚至异常(分配 复杂到浮点数或整数):