精华内容
下载资源
问答
  • 以大学的图书馆来举例 ...四维数组是书架 五维数组是图书室2201(好几个书架) 六维数组是图书馆某一层,2楼/3楼,好几个图书室 七维数组是整个图书馆 第N维数组是宇宙......................... ...

    以图书馆来举例

     

    一维数组是一条线

    二维数组是一页纸

     

    三维数组是一本书

    四维数组是书架

     

    五维数组是图书室2201(好几个书架)

     

    六维数组是图书馆某一层,2楼/3楼,好几个图书室

    七维数组是整个图书馆

    第N维数组是宇宙.........................

     

     

     

    展开全文
  • 把二维数组拆分为三维数组 目标:把一个m∗nm*nm∗n的数组,每x行为一页(x可被m整除),拆分为一个m行n列x页的三维数组 代码 import numpy as np a = np.arange(30) a.resize(6,5) a array([[ 0, 1, 2, 3, 4], [ 5...

    说实话,我也奇怪我怎么会有这么奇怪的需求,,,

    把二维数组拆分为三维数组

    目标:把一个 m ∗ n m*n mn的数组,每x行为一页(x可被m整除),拆分为一个m行n列x页的三维数组

    代码

    import numpy as np
    a = np.arange(30)
    a.resize(6,5)
    a
    array([[ 0,  1,  2,  3,  4],
           [ 5,  6,  7,  8,  9],
           [10, 11, 12, 13, 14],
           [15, 16, 17, 18, 19],
           [20, 21, 22, 23, 24],
           [25, 26, 27, 28, 29]])
    a.reshape(3,2,5) # 3页,2行,5列
    array([[[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9]],
           [[10, 11, 12, 13, 14],
            [15, 16, 17, 18, 19]],
           [[20, 21, 22, 23, 24],
            [25, 26, 27, 28, 29]]])
    

    把三维数组拆为四维数组

    a=np.arange(60)
    a.resize(6,2,5)
    a
    array([[[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9]],
           [[10, 11, 12, 13, 14],
            [15, 16, 17, 18, 19]],
           [[20, 21, 22, 23, 24],
            [25, 26, 27, 28, 29]],
           [[30, 31, 32, 33, 34],
            [35, 36, 37, 38, 39]],
           [[40, 41, 42, 43, 44],
            [45, 46, 47, 48, 49]],
           [[50, 51, 52, 53, 54],
            [55, 56, 57, 58, 59]]])
    a.resize(3, 2, 2, 5)
    a
    array([[[[ 0,  1,  2,  3,  4],
             [ 5,  6,  7,  8,  9]],
            [[10, 11, 12, 13, 14],
             [15, 16, 17, 18, 19]]],
           [[[20, 21, 22, 23, 24],
             [25, 26, 27, 28, 29]],
            [[30, 31, 32, 33, 34],
             [35, 36, 37, 38, 39]]],
           [[[40, 41, 42, 43, 44],
             [45, 46, 47, 48, 49]],
            [[50, 51, 52, 53, 54],
             [55, 56, 57, 58, 59]]]])
    

    a从6页2行5列,被拆为3部分2页2行5列,可以看到直接用resize把待拆分数组的第一维直接因子分解,得到的拆分结果不会乱序。

    如果对得到的四维数组转置,比如把第二维和第三维换了

    a.transpose(0, 2, 1, 3)
    array([[[[ 0,  1,  2,  3,  4],
             [10, 11, 12, 13, 14]],
            [[ 5,  6,  7,  8,  9],
             [15, 16, 17, 18, 19]]],
           [[[20, 21, 22, 23, 24],
             [30, 31, 32, 33, 34]],
            [[25, 26, 27, 28, 29],
             [35, 36, 37, 38, 39]]],
           [[[40, 41, 42, 43, 44],
             [50, 51, 52, 53, 54]],
            [[45, 46, 47, 48, 49],
             [55, 56, 57, 58, 59]]]])
    

    注意a.transpose(0, 2, 1, 3)并不会概念a,如果要把转置得到的矩阵存下来就必须赋值,如b=a.transpose(0, 2, 1, 3),这样b就是转置后的矩阵,a并未变化。

    b=numpy.array([[1,2],[3,4]])
    c=b.transpose(1,0)
    b
    Out[16]: 
    array([[1, 2],
           [3, 4]])
    c
    Out[17]: 
    array([[1, 3],
           [2, 4]])
    
    展开全文
  • 用new创建多维数组时,最后需要用delete,但是我在delete时遇到了麻烦,实在不能再浪费...一维数组 int a[4] ={1,2,3,4}; 二维数组 int b[3][4] = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4} 三维数组 int c[2][3][4] = {

    用new创建多维数组时,最后需要用delete,但是我在delete时遇到了麻烦,实在不能再浪费时间了,先mark一下,至少创建多维数组这段是对的

    以int型数组为例,我们知道

    一维数组  int a[4] ={1,2,3,4};

    二维数组  int b[3][4] = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4}

    三维数组  int c[2][3][4] = {1,2};


    那么用new方式如何创建呢

    一维数组有

    int *p1 = new int[4];

    二维数组有

    int (*p2)[4] = new int[3][4];


    三维数组

    int (*p3)[3][4] = new int[2][3][4];//两维三行四列


    同样的四位数组

    int (*p4)[2][3][4] = new int[1][2][3][4];//不知道怎么叫了


    忘了从哪里看到的说: 从二维数组开始,定义并不是写成  int *p2[4]、int * p3[3][4]、...这是因为int * p2[4]表示定义一个数组p2,该数组是int *型,数组内的每个元素都是指向int型的指针。

    	//step 1定义多维数组
    
    	//int *q1 = new int[4];  //创建一维数组,暂时不用
    	//int (*q2)[4] = new int[0][4];//创建二位数组,暂时不用
    	int (*p)[3][4] =  new int[2][3][4];//创建三维数组,本文研究的重点,我为了少打字,这个变量我定义成了p,并不是p3
    	//int (*p4)[3][4][5] = new int [0][3][4][5];//创建四维数组
    
    	//留个标记,用于
    	//存放这些数组的指针,用于验证是否delete时会用到
    	int *backup[24];
    	int imark = 0;
    
    	//循环将三维数组每个元素均赋值为1
    	printf("------初始化得到的二维数组----\n");
    	for(int i = 0;i< 2;i++)
    	{
    
    		for(int j = 0;j<3;j++)
    		{
    			for(int k = 0;k<4;k++)
    			{
    				printf("%d --->",(*(*(p+i)+j)+k));//初始化之前均为0
    				printf("%d ",*(*(*(p+i)+j)+k));//这里打印了new出来的三维数组,本层循环最后将每个值赋值成了1
    
    
    				backup[imark++] = (*(*(p+i)+j)+k);
    				*(*(*(p+i)+j)+k) = 1;//这里将每个元素赋值成了1,为的是方便后面delete时对比查看
    
    			}
    			printf("\n");
    		}
    
    	}
    
    	printf("---------------------\n");//
    
    	//step 2 准备检验
    
    	//前辈说书中讲的,数组的大小在之前的四个字节内存储着,究竟是啥呢,在这里可以打印查看printf("front 4 byte is %d, -->%d\n",&p[0][0][0]-1,(int)*(&p[0][0][0]-1));printf("p[0][0][0] address is %d\n",&p[0][0][0]);printf("p[1][2][3] address is %d\n",&p[1][2][3]);printf("\n");//这里尝试了好多种delete的方式都没有成功???╮(╯▽╰)╭
    	//第一种尝试,直接删除p数组,这个似乎从原理上很容易否定
    	/*
    	delete []p;//这种方式发现只删除了new出来的前两个元素
    
    	*/
    
    	//第二种尝试,借用一下保存的指针,用指针一个一个去free
    	/*
    	for(int i =0;i<24;i++)
    	{
    	delete backup[i];//用backup中记忆的位置一个一个删除,发现行不通,&backup[i]也行不通
    	//delete []backup;//这种也是行不通的,我注解上了,可以试试
    	}
    
    	*/
    
    	//第三种尝试,嵌套进入生成的数组,一层一层的去free,然而依然失败,不知道是重复删除了,还是怎么了,感觉是重复删除了
    	for(int i = 0;i<2;i++)
    	{
    		for(int j = 0;j<3;j++)
    		{
    			delete [] p[i][j];
    		}
    	delete []p[i];
    	}
    
    
    	//第四种尝试,一个一个删,但依然没有成功,我从大到小,先小到大均试了一次,依然失败,下面写的是从大到小
    	/*
    	delete p[1][2][3];//不要搞混乱,2*3*4维数组最大值就是这个
    	delete p[1][2][3];//不列写了,因为占篇幅,可以肯定的是没成功
    	//...
    	delete p[0][0][0];
    	*/
    
    
    	//这里面检查是否已经delete了
    	for (int i = 0; i < 24; i++) {
    		if ((i != 0) && (i % 4 == 0))
    		{
    			printf("\n");
    		}
    		printf("[%d]%d--->%d ", i, backup[i], (int) *backup[i]);
    	}
    	printf("\n");
    	return 0;
    


    我目前gdb方式还不会看,另外delete还学得不够深入,再钻进去周末别的也就看不成了,所以得先记下。


    另外粘一个别人new三维数组的方法

    int*** a= new int**[5];
    for (int i = 0; i < 5; ++i)
    {
         a[i] = new int*[6];
         for (int j = 0; j < 6; ++j)
        {
                a[i][j] = new int[7];
         }
    }
    for (int i = 0; i < 5; ++i)
    {
         for (int j = 0; j < 6; ++j)
         {
               delete[] a[i][j];
         }
         delete[] a[i];
    }
    delete[] a;


    就先到这里吧



    展开全文
  • 下拉列表的四级联动(纯javascript语言及定义四维数组) 下拉列表的四级联动(纯javascript语言及定义四维数组) 下拉列表的四级联动(纯javascript语言及定义四维数组) 下拉列表的四级联动(纯javascript语言及定义四维...
  • 在C#中Array.Sort()函数是不能对二维数组进行排序的。 那么,我们应该怎么对C#中的四维数组进行四维度排序呢? 话不多说,直接上代码:

    在C#中Array.Sort()函数是不能对二维数组进行排序的。

    那么,我们应该怎么对C#中的四维数组进行四维度排序呢?

    话不多说,直接上代码:

    展开全文
  • Python 三维数组升为四维数组

    千次阅读 2021-03-31 14:42:11
    在尝试用深度学习做项目时,发现对于Pytorch框架下的cnn网络,灰度图的输入格式应该为(n,ch,h,w)。n为图片数量,ch为通道数,h,w为图片长宽像素。 然而实际在opencv处理的通道数为1灰度图时,其给出的图片大小为...
  • 下面我们就将得到的测试图片保存在四维数组中,并生成.mat的字典格式。 import numpy as np import os.path import shutil from scipy.io.matlab.mio import savemat, loadmat import matplotlib.pyplot as plt ...
  • Java四维数组的四维度排序

    千次阅读 2018-09-14 12:04:29
    在Java中Arrays.sort()函数是不能对二维数组进行排序的。 那么,我们应该怎么对Java中的维维数组进行维度排序呢? 话不多说,直接上代码:
  • 尝试了用结构体为四维数组申请动态内存空间,希望对大家有用。代码如下: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct _a{ float *dat; }A; int main() { int i,j,k...
  • 尝试了用堆栈的方式为四维数组申请动态内存空间,并将申请内存的操作封装成了子函数,方便在主程序中使用。希望对大家有用。代码如下: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...
  • 四维矩阵、四维数组

    万次阅读 多人点赞 2015-11-14 12:10:39
  • python三维、四维数组相乘

    万次阅读 2016-12-22 17:27:17
    例1,三维数组相乘 import numpy as np a=np.arange(8).reshape([2,2,2]) b=np.arange(8).reshape([2,2,2]) c=a*b 则三维矩阵a、b的两页分别是: a(:,:,1)=b(:,:,1)=(0213)a(:,:,1)=b(:,:,1)=\be
  • vc读取文件中的坐标后,把数据存储到一个四维数组中,该怎么做?其中的x,y,z还要分别存储,该怎么区分呢?
  • 按行优先顺序列出四维数组A[2][3][2][3]所有元素在内存中存储次序
  • 在用来训练的图片数组中,一般都是四维的,比如(600,299,299,3),600表示在这个数组中一共有600张图片,299则是图片的宽高,3表示图片是彩色的。现在,我们来把自己文件夹下的所有的图片都读到一个数组中,并拥...
  • 请问一下各位知道怎么样通过numpy创建一个四维数组用来存储多张图片吗? 要求最后得到的四维数组格式是 (图片数量,图片宽度,图片高度,通道数) 单张图片的读取我可以用import matplotlib.image as mpimg 这个...
  • 文章目录transpose的原理是根据维度shape索引决定的二维数组维数组维数组 生成一个2*2的数组 arr = np.arange(4).reshape((2,2)) arr 我们生成了一个维度为2的二维数组,其中有两个索引值:矩阵的行和列 ...
  • 学习必备 欢迎下载 C 语言程序设计课程...讲课进程和时间分配 1引入5 分钟 在 C 语言中数组的元素还可以是数组这样就构成二维数组所以二维数组可以堪 称是数组的数组照此办理还可以构成三维四维数组称多维数组等等二维
  • Python numpy实现二维数组和一维数组拼接的方法撰写时间:2017.5.23一维数组1.numpy初始化一维数组a = np.array([1,2,3]);print a.shape输出的值应该为(3,)二维数组2.numpy初始化二维数组a = np.array([[1,2,3]])...
  • 案例一:一维数组 /*一维数组*/ int[] a= {2,4,6}; //定义数组 for(int i=0 ; i<3 ; i++) { System.out.println(a[i]+""); } 打印 案例二:二维数组 /*二维数组*/ int[][]b = { {1,3,5}, ...
  • 维数组或三维数组转为一维数组 1.二维数组转换为一维数组: 设二维数组a[i][j],数组a行数x行,列数y列; 一维数组b[n],数组b最多存储m=x*y个元素。 令x=3,y=4则:m=12 此时,数组a中元素的位置序号(i j)为: 00 ...
  • 一、二维数组 (一)二维数组概述 二维数组其实就是每一个元素为一维数组的数组。 (二)二维数组初始化格式 1.动态初始化 1.1 二维数组格式1 数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个...
  • 我们以三维数组为例,其他维度的思路一样 先产生一个随机的三维数组 arr = np.arange(16).reshape((2,2,4)) arr 使用swapaxes函数 arr.swapaxes(1,2) 这个意思就是交换第二个和第三个轴 结果就是 为什么会是这样...
  • 维数组种表示方法及二维数组的排序问题 /* 研究二维数组的排序问题 二维数组种表示方法 第一种一维数组表示二维数组 for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { YiWi[i * ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 161,199
精华内容 64,479
关键字:

四维数组