np.array与list在使用int和float时的加法行为不一致

0 投票
0 回答
28 浏览
提问于 2025-04-12 06:50

我使用的是Python 3.10.8。

我对这种行为感到有点困惑,可能有合理的解释,但还是觉得很奇怪...

对于一个列表:

l = [1, 2]
l[0] += 0.5

结果是 l[0] -> 1.5

对于一个numpy数组:

l = np.array([1, 2])
l[0] += 0.5

结果是 l[0] -> 1

再对于一个numpy数组:

l = np.array([1, 2.0])
l[0] += 0.5

结果是 l[0] -> 1.5

我认为这是因为列表可以存放不同类型的数据,而numpy数组总是保持相同的数据类型。

在第一个例子中,列表里有整数值,但使用 += 操作时,因为右边是一个浮点数,所以结果被转换成了浮点数。

在第二个例子中,numpy数组里是整数值,所以 += 操作时,右边的值被转换成整数,结果四舍五入到0。

在第三个例子中,numpy数组里有浮点值(给数组里放一个浮点值会把整个数组都变成浮点数?),所以加上0.5时只是进行了浮点数的加法。

如果我的假设都正确,我还是觉得这有点难以理解... 也许在使用numpy数组时,最好在定义时就始终使用浮点数,或者明确指定数据类型,这样可以确保得到你想要的结果。

0 个回答

暂无回答

撰写回答