一维,二维,三维数组理解

举例来说。把一个数当作一个鸡蛋,那么一个int型的变量就是一个鸡蛋。现在建立一个一维数组int[5]:这个就相当于在你面前放了一排5个鸡蛋。

接下来到二维数组int[3][4]:首先,由二维数组的第二维[4]我们可以确定一排是4个鸡蛋,这个跟刚才的一维数组一样。

那么之前的[3]是什么呢?于是int[3][4]相当于在你面前放了3排的鸡蛋,一排4个。再到三维数组int[3][4][5]:

第三维的[5]就是之前一位数组里的一排5个鸡蛋,第二维的[4]就是一共有4排。那么这个[3]呢?那就是如果把这4排每排5个的鸡蛋看成一个小组,即4*5=20个鸡蛋是一个组,在你面前就放着3组的鸡蛋。

附:
程序理解
array1=np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]);//相当于3个2 * 2 的二维数组
print(“%d %d %d %d\n”%(array1[0],array1[0][0],array1[0][0][0],array1);
*//如果说把三维数组比作一个立方体的话,那么这个立方体底边是个2*2的正方形,高为3
//注意:三维数组的高维度是写在最前面的,也就是立方体的z***
//下面的四行代码相当于立方体的第一层
print(“%d \n”%array1[0][0][0]);
print(“%d \n”%array1[0][0][1]);
print(“%d \n”%array1[0][1][0]);
print(“%d \n”%array1[0][1][1]);
//下面的四行代码相当于立方体的第二层
print(“%d \n”%&array1[1][0][0]);
print(“%d \n”%&array1[1][0][1]);
print(“%d \n”%&array1[1][1][0]);
print(“%d \n”%&array1[1][1][1]);
//下面的立方体相当于第三层
print(“%d \n”%&array1[2][0][0]);
print(“%d \n”%&array1[2][0][1]);
print(“%d \n”%&array1[2][1][0]);
print(“%d \n”%&array1[2][1][1]);

/*如果给出一个数组首地址,那么以求最后一个元素array[2][1][1]的地址为例
最后一个元素的地址 = (最高一层立方体底下的所有元素的个数 + 元素所在层的除了元素所在行的所有元素
+ 元素所在行的除自己之外的所有元素)* 一个元素所占字节数 + 数组首地址;

公式也就为Loc(Aijk) = (i * 2 * 2 + j * 2 + k) + Loc(A000); */

//注意这个i,j,k的值是2.1.1.但是其实这个数组是开始初始化的大小是【3】【2】【2】,因此在公式中不需要-1的操作。
//另:上面的输出顺序也是三维数组的赋值顺序

猜你喜欢

转载自blog.csdn.net/weixin_40964777/article/details/82289946