[英]Indexing and Slicing of matrices in python
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)行和col,所以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)],但它给了我错误。
注意:我想将其切成相同的矩阵。
您可以分两步编制索引
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],:]
正如您在上一条评论中指出的那样,您还可以使用Numpy 高级索引 :
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]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.