基本的切片操作不再講解贴见。可以任意百度搜索一片博文即可得到你想要的答案式散。廢話(huà)不多說(shuō)植袍,看例子:
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])
我們可以看出惧眠,它是將前后兩個(gè)列表位置一一對(duì)應(yīng)(如圖所示),構(gòu)成了坐標(biāo)進(jìn)行取值于个。第一個(gè)列表代表行標(biāo)氛魁,第二個(gè)列表代表列標(biāo)。
Python中第二種情況:
>>> A[row,:][:,col]
array([[ 4, 18, 16],
[15, 7, 0],
[20, 5, 21]])
可以看出览濒,第二種情況就和MATLAB是一樣的了呆盖。取指定的行和指定的列的所有交叉元素,如下圖所示贷笛。
附
該文章于2017年5月20日于CSDN上首次發(fā)表应又,2017年12月22日搬家至此!