Numpy:切片矩阵删除一行和一列

时间:2016-08-12 03:12:42

标签: python numpy matrix

给定n×n矩阵(技术上是np.array)L,我希望删除第k行和第k列。这行代码按预期工作(它选择第1到第3行和列):

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

当我尝试用动态生成的元组替换(1,2,3)除了k时,它失败了:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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