2016-08-12 205 views
0

给定一个n乘n的矩阵(技术上是一个np.array)L,我希望删除第k行和第k列。这行代码按预期方式工作(它选择通过第三行和列的第一):Numpy:切片矩阵删除一行和一列

Lt = L[(1,2,3),(1,2,3)] 

当尝试通过排除k中的动态生成的元组,以取代(1,2,3),它失败:

keep = (i for i in range(n) if i != k) 
Lt = L[keep,keep] 
# IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices 

我该如何正确地做到这一点?

回答

2
keep = (i for i in range(n) if i != k) 

这是一个生成器表达式,而不是生成的元组本身;相反,尝试

keep = tuple(i for i in range(n) if i != k)