欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

彻底区分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]

上一篇:

下一篇: