gpt4 book ai didi

python - 在 python 中 a/= 2.0 和 a = a/2.0 的结果是不一样的

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:53 25 4
gpt4 key购买 nike

In [67]: import numpy as np
In [68]: a = np.arange(10)
In [69]: b = a.copy()
In [70]: a /= 2.0
In [71]: a
Out[71]: array([0, 0, 1, 1, 2, 2, 3, 3, 4, 4])
In [72]: b = b / 2.0
In [73]:
In [73]: b
Out[73]: array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

我不知道为什么在尝试处理 numpy 数组时结果不同。

最佳答案

a = np.arange(10) 有一个整数数据类型。

>>> np.arange(10).dtype
dtype('int64')

就地修改数组——例如,使用a/= 2.0——不会改变数据类型。所以结果包含整数。

相比之下,a/2.0 "upcasts" the resultant array float ,因为除数是一个 float 。


如果您从一个 float 据类型的数组开始,那么这两个操作会产生相同的结果:

In [12]: a = np.arange(10, dtype='float')

In [13]: b = a.copy()

In [14]: a /= 2.0

In [15]: a
Out[15]: array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

In [16]: b = b / 2.0

In [17]: b
Out[17]: array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])

关于python - 在 python 中 a/= 2.0 和 a = a/2.0 的结果是不一样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31481031/

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