给定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
我该如何正确地做到这一点?
答案 0 :(得分:2)
keep = (i for i in range(n) if i != k)
这是一个生成器表达式,而不是生成的元组本身;相反,试试
keep = tuple(i for i in range(n) if i != k)