二维数组或三维数组转换为一维数组

article/2025/8/26 8:48:33

二维数组或三维数组转为一维数组

1.二维数组转换为一维数组:

设二维数组a[i][j],数组a行数x行,列数y列;
一维数组b[n],数组b最多存储m=x*y个元素。
令x=3,y=4则:m=12
此时,数组a中元素的位置序号(i j)为:
00	01	02	03
10	11	12	13
20	21	22	23
数组b中元素的位置序号(n)为:
0	1	2	3
4	5	6	7
8	9	10	11
数组a中每一行位置j的序号均为:0	1	2	3
因此,数组b中元素的位置序号可写成:
0+0		1+0		2+0		3+0
4+0		4+1		4+2		4+3
8+0		8+1		8+2		8+3
数组a中每列位置i的序号均为:0   1   2
因此,数组b中元素的位置序号可写成:
0*4+0		0*4+1		0*4+2		0*4+3
1*4+0		1*4+1		1*4+2		1*4+3
2*4+0		2*4+1		2*4+2		2*4+3
由上述数组b中元素的位置序号可得:
n=i*y+j,其中y为数组a的列数,此例中y=4。
综上所述,经猜想与反复验证数组a中元素的位置序号(i j)与
数组b中元素的位置序号(n)的关系为;n=i*y+j(y为数组a的列数)		      

代码如下:

#include<stdio.h>
#define x 3//宏定义数组每列存储元素的最多个数
#define y 4//宏定义数组每行存储元素的最多个数
void main()
{int a[x][y],b[100],i,j,n,m;printf("enter %d elements:\n",x*y);for(i=0;i<x;i++){for(j=0;j<y;j++){scanf("%d",&a[i][j]);//输入二维数组存储元素}}printf("The 2D array is:\n");for(i=0;i<x;i++){for(j=0;j<y;j++){printf("a[%d][%d]=%d  ",i,j,a[i][j]);//输出二维数组存储元素}printf("\n");//以每行y个元素的格式输出}for(i=0;i<x;i++){for(j=0;j<y;j++){b[j+i*y]=a[i][j];//二维数组转一维数组}}printf("The 1D array is:\n");for(n=0,m=1;n<x*y;n++,m++){printf("b[%d]=%d  ",n,b[n]);//输出一维数组存储元素if(m%3==0){printf("\n");//以每行3个元素的格式输出}}
}

运行结果如下:
在这里插入图片描述
2.三维数组转换为一维数组:

设三维数组a[i][j][k],数组a中x轴方向最多有x个元素,
y轴方向最多有y个元素,z轴方向最多有z个元素。
一维数组b[n],数组b最多存储m=x*y*z个元素。
令x=3,y=2,z=2则:m=12
此时,数组a中元素的位置序号(i j k)为:
000   001   002
010   011   012
100   101   102
110   111   112
数组b中元素的位置序号(n)为:
0	1	2	
3	4	5
6	7	8
9	10	11
因猜想过程难以描述,所以此处省略猜想过程。
数组b中元素的位置序号(n)最终可写成:
3*(2*0+0)+0   3*(2*0+0)+1   3*(2*0+0)+2
3*(2*0+1)+0   3*(2*0+1)+1   3*(2*0+1)+2
3*(2*1+0)+0   3*(2*1+0)+1   3*(2*1+0)+2
3*(2*1+1)+0   3*(2*1+1)+1   3*(2*1+1)+2
由上述数组b中元素的位置序号可得:
n=x(y*i+j)+k,其中x为数组a在x轴方向存储元素的最多个数,
y为数组a在y轴方向存储元素的最多个数,此例中x=3,y=2。
综上所述,经猜想与反复验证数组a中元素的位置序号(i j k)与
数组b中元素的位置序号(n)的关系为;
n=x(y*i+j)+k(x为数组a在x轴方向存储元素的最多个数,
y为数组a在y轴方向存储元素的最多个数)

代码如下:

#include<stdio.h>
#define z 2//宏定义数组在z轴方向存储元素的最多个数
#define y 2//宏定义数组在y轴方向存储元素的最多个数
#define x 3//宏定义数组在x轴方向存储元素的最多个数
void main()
{int a[z][y][x],b[100],i,j,k,m,n;printf("enter %d elements:\n",z*y*x);for(i=0;i<z;i++){for(j=0;j<y;j++){for(k=0;k<x;k++){scanf("%d",&a[i][j][k]);//输入三维数组存储元素}}}printf("The 3D array is:\n");for(i=0;i<z;i++){for(j=0;j<y;j++){for(k=0;k<x;k++){printf("a[%d][%d][%d]=%d  ",i,j,k,a[i][j][k]);//输出三维数组存储元素}printf("\n");//以每行x个元素的格式输出}}for(i=0;i<z;i++){for(j=0;j<y;j++){for(k=0;k<x;k++){b[x*y*i+x*j+k]=a[i][j][k];//三维数组转一维数组}}}printf("The 1D array is:\n");for(n=0,m=1;n<x*y*z;n++,m++){printf("b[%d]=%d  ",n,b[n]);//输出一维数组存储元素if(m%3==0){printf("\n");//以每行3个元素的格式输出}}
}

运行结果如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/pM5SBnlL.shtml

相关文章

三维数组

1.需求 定义一个三维数组&#xff0c;并初始化之。 写一个打印函数&#xff0c;负责打印三维数组中的数据&#xff0c;并测试。2.代码运行结果&#xff1a; 3.代码 public static void main(String[] args) {//1、定义一个三维数组int[][][] t new int[2][2][3];//2、初始化f…

认识三维数组各个维度

import numpy as np data_array np.zeros((3, 5, 6), dtypenp.int) print(data_array) 这段代码会输出一个3行5列6通道的0数组&#xff0c;得到结果如下图 下面我们就开始测试&#xff0c;哪些是行、列、通道。 首先&#xff0c;我们改变1行1列1通道&#xff08;在代码中数组…

matlab创建三维数组的三种方法

在Matlab中习惯性的会将二维数组中的第一维称为“行”第二维称为“列”&#xff0c;而对于三维数组的第三位则是习惯性的称为“页”。在Matlab中将三维及三维以上的数组统称为高维数组&#xff0c;三维数组也是高级运算的基础&#xff0c;本文将介绍三种创建三维数组的方法。&a…

Python新建三维数组并赋值

本文主要分为2部分&#xff1a;<1>如何建立三维矩阵&#xff1b;<2>如何将二维数组赋值到三维数组&#xff0c;且包含对每个参数的理解。多维矩阵的建立和赋值与三维矩阵思想一样&#xff0c;大家可以举一反三。 1. 如何建立三维数组 若我们需要建立3✖️3✖️3的…

Python中三维数组位置详解

图示效果图&#xff1a; 直接贴代码&#xff1a; def test3D():import numpy as npdata_array np.zeros((3, 5, 6), dtypenp.int)data_array[1, 2, 2] 1print(data_array) 介绍&#xff1a;通过np.zeros创建一个3行5列6个通道的三维数组&#xff0c;并给第二个通道的第一行第…

数据结构-三维数组地址计算

三维数组地址计算 定义一个三维数组a[z][x][y]——有z层&#xff0c;x行&#xff0c;y列⚠️⚠️⚠️&#xff0c;下标从0开始&#xff0c;求a[k][i][j]的地址——第k1层&#xff0c;第i1列&#xff0c;第j1列。 想象一个全是均匀大小格子的收纳盒&#xff0c;有z层&#xff…

JS一维数组转化为三维数组有这个方法就够了

今天在CSDN上问答区看到一个提问的小伙伴&#xff0c;是想要将一维数组转化为三位数组的需求&#xff0c;正好不是很忙&#xff0c;乐于助人的我立马给这位同学安排上 下面是后端同学返给我们的一维数组数据格式 [{品牌: xiaomi, 机型: 10, 配置: 512},{品牌: xiaomi, 机型: 10…

理解三维数组

array[2][2] 相当于两个一维数组 array[3][2][2] 类比可知&#xff0c;相当于3个 2 * 2 的二维数组 可以将三维数组比作一个立方体&#xff0c;这个立方体底面是个2*2的正方形&#xff0c;高为3&#xff0c;如下图所示。 注意&#xff1a;三维数组的高维度是写在最前面的&…

1.numpy中三维数组的理解

numpy中三维数组的理解 三维数组图形--立方体图片中的三维数组RNN中序列数据的三维数组迭代数据中的三维数组 三维数组图形–立方体 我们在做图像处理&#xff0c;RNN序列数据&#xff0c;迭代数据的时候会遇到三维数组&#xff0c;我们应该理解这三种情况下三维数组的数据分布…

三维数组-python

三维数组&#xff0c;如下图 其实某种意义上&#xff0c;是不是一个小正方形也可以是三维数组&#xff0c;一排4*3的也可以看成是三维数组。只不过对于这两种情况而言&#xff0c;三维数组的第三个参数不太一样而已&#xff0c;是1. 一维数组和二维数组&#xff1a; 其实就说…

关于二维数组、三维数组及多维数组的深度理解及其建立方法(为个人理解,经过实践验证)

关于一维数组大家并不陌生&#xff0c;原理很简单就是申请一块连续的存储空间&#xff0c;可是当多维数组与指针联系在一块的时候我们往往会出现迷茫&#xff0c;现在我来说一下我怎么理解的多维数组。 我认为多维数组只不过是通过申请多个指针数组的方法来表示一维数组的方法…

初识多维数组—三维数组

三维数组&#xff0c;是指维数为三的数组结构。三维数组是最常见的多维数组&#xff0c;由于其可以用来描述三维空间中的位置或状态而被广泛使用。简单说&#xff0c;一维数组就是坐标轴上的x轴&#xff0c;只有一个方向。二维数组就是x轴y轴&#xff0c;组成了一个平面。三维数…

C语言之三维数组

前言&#xff1a; 之前学习C语言的时候仅仅是掌握了二维数组&#xff0c;但是并没有对三维数组进行研究&#xff0c;此情此景. . . . . .那就让我对先前研究的三维数组的相关知识发布一下吧&#xff0c;也许能够帮到你&#xff01;实际上&#xff0c;当你阅读此篇文章时&#x…

Cassandra的Allow Filtering

https://blog.csdn.net/qiaojialin/article/details/81709766 Cassandra 支持的查询语句很严格&#xff0c;首先 partition key 必须精确查询 缺少 partition key 的等值过滤条件时就需要加Allow Filetering

All matches were filtered out by modular filtering for argument: mysql-community-server

问题场景&#xff1a;在尝试使用docker安装自定义centos环境时&#xff0c;使用dockfile文件创建镜像容器&#xff0c;在centos7镜像中使用yum安装mysql5.7。 在安装过程中报错&#xff1a;All matches were filtered out by modular filtering for argument: mysql-community…

论文笔记:Collaborative Filtering Recommender Systems

学习随笔&#xff0c;仅记录值得留意的点。 协同过滤的适用领域 PS&#xff1a;适用协同过滤的场景并不一定完全符合下述要求&#xff0c;只是如果下述条件符合会更适合使用CF 数据要求 1、item数量足够多 2、每个item有足够多的评分 3、每个用户对较多数量的item给出了评…

【科研导向】Neural Collaborative Filtering 神经协同过滤 <论文理解代码分析>

Neural Collaborative Filtering——WWW17 文章简介一.摘要解析二.技术要点三.实验部分 代码解析一.模型构建二.难点问题 未来展望 文章简介 该文由何向南教授团队于17年发表在IW3C2&#xff0c;其核心思想在于结合了传统矩阵分解的易用性与神经网络对用户项目交互的高维感知力…

Maven Filtering和Profile

Filtering Filtering是resource插件的功能&#xff0c;作用是将资源文件中的占位符替换成对应的值&#xff0c;如下图所示&#xff1a; 使用注意 启用resource插件的filtering功能&#xff1b;设定资源文件的路径、过滤条件和编码等等&#xff1b;设定属性文件来源&#xf…

Particle Filtering粒子滤波

粒子滤波理论 本文由最基础的贝叶斯估计开始介绍&#xff0c;再引出蒙特卡罗采样&#xff0c;重要性采样&#xff0c;SIS粒子滤波&#xff0c;重采样&#xff0c;基本粒子滤波Generic Particle Filter&#xff0c;SIR粒子滤波&#xff0c;这些概念的引进&#xff0c;都是为了解…

Deep Frequency Filtering for Domain Generalization论文阅读笔记

这是CVPR2023的一篇论文&#xff0c;讲的是在频域做domain generalization&#xff0c;找到频域中generalizable的分量enhance它&#xff0c;suppress那些影响generalization的分量 DG是一个研究模型泛化性的领域&#xff0c;尝试通过各自方法使得模型在未见过的测试集上有良好…