我想选择一个大型数组的一小部分,并找到该子集的平均值。我在定义子集时尝试指定整数:
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。
答案 0 :(得分:3)
问题是np.linspace
期望它应该产生的点数作为第三个参数。因此,这应该是整数(整数)。但是1e6
被解析为float,因此需要转换为整数,因此需要警告。
解决方案是将1e6
写为整数,即 1000000
。如果您使用的是Python 3,则可以编写1_000_000
来使该数字更具可读性。