Python Numpy按列表切片

Python Numpy按列表切片,python,numpy,Python,Numpy,例如,我有一个这样的矩阵 mat = np.diag((1,1,1,1,1,1)) print(mat) out:[[1 0 0 0 0 0] [0 1 0 0 0 0] [0 0 1 0 0 0] [0 0 0 1 0 0] [0 0 0 0 1 0] [0 0 0 0 0 1]] 我可能需要一些切片,可以是任何行和列的组合。

例如,我有一个这样的矩阵

   mat = np.diag((1,1,1,1,1,1))
        print(mat)
        out:[[1 0 0 0 0 0]
             [0 1 0 0 0 0]
             [0 0 1 0 0 0]
             [0 0 0 1 0 0]
             [0 0 0 0 1 0]
             [0 0 0 0 0 1]]
我可能需要一些切片,可以是任何行和列的组合。 如果是lines=[0,1,2]columns=[0,1,2],我可以使用:

mat[0:3,0:3]
如果我需要行=[0,1,2,5]列=[0,1,2,5],我写:

mat[[0,1,2,5],[0,1,2,5]]
我只能得到:

out:[1 1 1 1]

但是我想得到一个4×4的矩阵。顺便说一下,列总是等长的。

对于非连续索引,您可以:

mat[[0,1,2,5],:][:,[0,1,2,5]]

i、 e.首先获取指定的行(从中获取4x6矩阵),然后从中获取指定的列。

对于非连续索引,您可以执行以下操作:

mat[[0,1,2,5],:][:,[0,1,2,5]]

i、 首先获取指定的行(从中获取4x6矩阵),然后从中获取指定的列。

非常感谢您可以将其缩短一点
mat[idx][:,idx]
非常感谢您可以将其缩短一点
mat[idx][:,idx]