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

来源:互联网 发布:手机淘宝店铺首页设置 编辑:程序博客网 时间:2024/05/15 23:50

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


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是一样的了。取指定的行和指定的列的所有交叉元素,如下图所示。