繁体   English   中英

Python中矩阵的索引和切片

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM