彻底区分MATLAB C Python中数组的索引及切片
程序员文章站
2024-01-05 16:26:34
...
**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]