Python/Numpy:除法给我意外的弃用警告
我正在从一个csv文件中读取数据,然后循环处理这些数据,接着我想用平均值来归一化这些数据,但出现了警告。我的代码是:
A = genfromtxt("train.txt", delimiter=';', skip_header=1)
lowid = A[:,1].min(axis=0)
highid = A[:,1].max(axis=0)
X = []
Y = []
for i in np.arange(lowid, highid):
I = A[A[:,1] == i][:, [0,2,3]]
meanp = np.mean(I[:,1]);
meanq = np.mean(I[:,2]);
for j in np.arange(I[:,0].min(axis=0)+2, I[:,0].max(axis=0)):
weekday = int(I[j,0]) % 7
# NORMALIZE:
P = I[j,1] / meanp
pP = I[j-1,1] / meanp
ppP = I[j-2,1] / meanp
X.append([weekday, P, pP, ppP])
Y.append(I[j,2])
train.txt文件看起来是这样的:
day;itemID;price;quantity
1;1;4.73;6
1;2;7.23;0
1;3;10.23;1
1;4;17.9;0
1;5;1.81;1
1;6;12.39;1
1;7;7.17;1
1;8;7.03;0
1;9;13.61;0
1;10;36.45;1
1;11;24.67;0
1;12;12.04;0
1;13;11.85;0
出现的警告是:
weekday = int(I[j,0]) % 7
DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
P = I[j,1] / meanp
DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
pP = I[j-1,1] / meanp
DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
ppP = I[j-2,1] / meanp
DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
Y.append(I[j,2])
DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
问题出在哪里呢?谢谢!
编辑 好的,我自己很快就解决了这个问题:j
必须是整数类型。我这样修复的:
for j in range(int(I[:,0].min(axis=0))+2, int(I[:,0].max(axis=0))):
这样解决可以吗?我刚学python……
1 个回答
3
好的,我自己很快就解决了这个问题:j
必须是整数类型。
我这样修复的:
for j in range(int(I[:,0].min(axis=0))+2, int(I[:,0].max(axis=0))):
可以使用 Python 的 range
函数,或者像这样明确指定 arange
的数据类型(感谢 @Davidmh):
for j in np.arange(I[:,0].min(axis=0)+2, I[:,0].max(axis=0), dtype=np.int):