我是 python 的新手并且在使用函数时遇到了问题。它应该删除出现 -1 的 (N,10) 矩阵(从文件导入)的行。这是代码 import pandas as pd import numpy as np
def load(name, f):
file = pd.read_csv(name,header=None)
totalMatrix = np.array(file)
if f == 'forward':
for i in range(len(totalMatrix)):
for j in range(10):
if totalMatrix[i,j] ==-1:
if i > 0:
totalMatrix[i,j]=totalMatrix[i-1,j]
else:
print("Warning")
f = 'drop'
elif f == 'drop':
for i in range(len(totalMatrix)): # or np.size(totalMatrix[:, 0])
for j in range(10):
if totalMatrix[i,j] == -1 :
totalMatrix = np.delete(totalMatrix, (i), axis=0)
t = totalMatrix[:, 0:6]
d = totalMatrix[:, 6:11]
return t, d
但我一直在运行这个错误:
line 38, in load
if totalMatrix[i,j] == -1 :
IndexError: index 2 is out of bounds for axis 0 with size 2
我试图在互联网上查看几个地方,但找不到答案,我自己也找不到错误。任何人都可以看到有什么问题并告诉我吗?
它不起作用,因为矩阵越来越小,并且您继续根据旧大小进行迭代,即如果 totalMatrix 在开始时有 3 行而您删除了一行,则最后一次迭代将尝试获取不存在的行。
在 Matrix 上迭代时,收集要删除的索引。之后,您可以立即删除它们。
toDelete = []
for i in range(len(totalMatrix)): # or np.size(totalMatrix[:, 0])
for j in range(10):
if totalMatrix[i,j] == -1 :
toDelete.append(i)
totalMatrix = np.delete(totalMatrix, i, axis=0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句