MATLAB和Python:取指定行和列的元素

基本的切片操作不再讲解。可以任意百度搜索一片博文即可得到你想要的答案。废话不多说,看例子:


MATLAB

>>> A = reshape(randperm(25),[5,5])

A = 

     3     8     6     7    19
    16    22    24     1    13
    17    20     4    12    23
     2    10    11     9    14
    25    18    15    21     5

>>> row = [1,3,5];
>>> col = [2,4,5];
>>> A(row,col)

ans = 

     8     7    19
    20    12    23
    18    21     5

Python

>>> import numpy as np
>>> A = np.random.permutation(25).reshape((5,5))
array([[ 6,  4, 13, 18, 16],
       [ 9, 10, 12, 22, 19],
       [ 1, 15, 17,  7,  0],
       [11,  3, 23, 24,  2],
       [ 8, 20, 14,  5, 21]])
>>> row = [0,2,4]
>>> col = [1,3,4]

Python中第一种情况:

>>> A[row,col]
array([ 4,  7, 21])

我们可以看出,它是将前后两个列表位置一一对应(如图所示),构成了坐标进行取值。第一个列表代表行标,第二个列表代表列标。

Python中第二种情况:

>>> A[row,:][:,col]
array([[ 4, 18, 16],
       [15,  7,  0],
       [20,  5, 21]])

可以看出,第二种情况就和MATLAB是一样的了。取指定的行和指定的列的所有交叉元素,如下图所示。



该文章于2017年5月20日于CSDN上首次发表,2017年12月22日搬家至此!

文章最后更新时间为:2018 年 10 月 15 日 09:43:55

添加新评论