涉及浮点数和整数的Python弃用警告

时间:2018-06-04 10:10:41

标签: python warnings

我想选择一个大型数组的一小部分,并找到该子集的平均值。我在定义子集时尝试指定整数:

import numpy as np

x = np.linspace(-10,10,1e6) # whole dataset

x0 = x[int(len(x)//2-5):int(len(x)//2+5)] # subset
print(x0)
xm = np.mean(x0) # average value of data subset
print(xm)

但我的代码提供了弃用警告:

DeprecationWarning: object of type <class 'float'> cannot be safely interpreted as an integer.
  x = np.linspace(-10,10,1e6)

有没有更好的方法来计算数据子集的平均值?我应该怎么做这个警告,它会成为较新版本的Python的问题?我正在使用Spyder 3.2.8。

1 个答案:

答案 0 :(得分:3)

问题是np.linspace期望它应该产生的点数作为第三个参数。因此,这应该是整数(整数)。但是1e6被解析为float,因此需要转换为整数,因此需要警告。

解决方案是将1e6写为整数, 1000000。如果您使用的是Python 3,则可以编写1_000_000来使该数字更具可读性。