区分MATLAB C Python中数组的索引及切片

2022-08-10,,,,

	**MATLAB C Python中的索引切片**
在不同的语言里,数组的下标索引及切片存在区别,如若混淆则会产生无法察觉的错误。

一、下标索引
1.1
对于MATLAB中数组索引,从1开始,到N结束,如:
data(1:N)  %表示data的第1到第N个元素

1.2
对于C系列语言中数组索引,从0开始,到N-1结束,如:
int data[N][N]; //定义有N*N个元素的二维data数组  
data[1,N-1]  //表示data的第2行、第N列的元素

1.3
对于Python语言中数组索引,正序:从0开始,到N-1结束;逆序:从-1开始,到-N结束。如:
range(5) #表示[0,1,2,3,4]
data[0] #表示data的第一个元素

二、切片
2.1
对于MATLAB中数组切片:
 %data从第beg个元素取到第end个元素,包括第end元素
data[beg:step:end]
%行列切片
data(:,col);data(row,:)

2.2
对于C系列语言中数组切片:
//data从第beg+1个元素取到第end个元素,包括第end元素
for(int i=beg;i<end;i++)    a(i);
//行列切片仍使用循环遍历

2.3
对于Python语言中数组切片:
#data从第beg+1个元素取到第end个元素,不包括第end+1元素
#当step等于负数的时候,从右向左取数
data[beg:end:step]

[m : ] 代表列表中的第m+1项到最后一项
[ : n] 代表列表中的第一项到第n项
eg.
week=[1,2,3,4,5,6,7]
print(week[2:5],'\n',week[:6],'\n',week[:-3],'\n',week[-3:])
输出:
[3, 4, 5] 
[1, 2, 3, 4, 5, 6] 
[1, 2, 3, 4] 
[5, 6, 7]

还有一种双冒号的切片。
即:  data[::step]
step为正时,从左向右每隔step个数取一个
step为负时,从右向左每隔step个数取一个
eg.
week=[1,2,3,4,5,6,7]
print(week[::2],'\n',week[::-2])
输出:
[1, 3, 5, 7] 
[7, 5, 3, 1]

本文地址:https://blog.csdn.net/weixin_44162044/article/details/107079298

《区分MATLAB C Python中数组的索引及切片.doc》

下载本文的Word格式文档,以方便收藏与打印。