import numpy as np
A= array([[ 1, 2, 3, 4, 5, 6, 7, 8],
[ 9, 10, 11, 12, 13, 14, 15, 16],
[17, 18, 19, 20, 21, 22, 23, 24],
[25, 26, 27, 28, 29, 30, 31, 32],
[33, 34, 35, 36, 37, 38, 39, 40],
[41, 42, 43, 44, 45, 46, 47, 48],
[49, 50, 51, 52, 53, 54, 55, 56],
[57, 58, 59, 60, 61, 62, 63, 64]])
我想按此顺序获取(0,4,5,7)行和列 所以o / p看起来像
A=
1 5 4 8
33 37 36 40
25 29 28 32
57 61 60 64
我试过这个A [(0,4,5,7),(0,4,5,7)],但它给了我错误。
注意:我想在同一矩阵中对其进行切片。
答案 0 :(得分:2)
您可以分两步进行索引
x = A[:,[0,4,5,7]]
x = x[[0,4,5,7],:]
>>> x
array([[ 1, 5, 6, 8],
[33, 37, 38, 40],
[41, 45, 46, 48],
[57, 61, 62, 64]])
我更改了变量名称,以便保留原始A
,但如果您不想这样做,则不必这样做。
或者,在一行中:
x = A[:,[0,4,5,7]][[0,4,5,7],:]
答案 1 :(得分:0)
正如您在上次评论中指出的那样,您也可以使用Numpy advanced indexing:
J = np.repeat([[0,4,3,7]], 4, axis=0)
B = A[J.T, J]
>>> B
array([[ 1, 5, 4, 8],
[33, 37, 36, 40],
[25, 29, 28, 32],
[57, 61, 60, 64]])