class Program
{
static void Main(string[] args)
{
double[] a = { 1, 2, 3, 4, 5, 6 };
double[,] b = Row2VecD(a);
double[,] c = Row2ArrT(a, 2);
//double[,] c = RowToArrD(a, 2);
double[] d = Arr2RowD(c); Console.WriteLine("\n行向量→列向量");
for(int i = 0; i < b.GetLength(0); i++)
{
for(int j = 0; j < b.GetLength(1); j++)
{
Console.WriteLine("b[{0},{1}]:{2}", i, j, b[i, j]);
}
} Console.WriteLine("\n\n行向量→数组");
for (int i = 0; i < c.GetLength(0); i++)
{
for (int j = 0; j < c.GetLength(1); j++)
{
Console.WriteLine("c[{0},{1}]:{2}", i, j, c[i, j]);
}
} Console.WriteLine("\n\n数组→行向量");
for (int i = 0; i < d.Length; i++)
{
Console.WriteLine("d[{0}]:{1}", i, d[i]);
} Console.ReadKey();
} //行向量→数组(内存复制版)
static double[,] RowToArrD(double[]src,int row)
{
if (src.Length % row != 0) return null;
int col = src.Length / row;
double[,] dst = new double[row, col];
for(int i = 0; i < row; i++)
{
//说明:“二维数组”【顺序储存】<=>“一维数组”
Buffer.BlockCopy(src, i * col * sizeof(double), dst, i * col * sizeof(double), col * sizeof(double));
}
return dst;
} //行向量→列向量(内存复制版)
static double[,] Row2VecD(double[] src)
{
double[,] dst = new double[src.Length, 1];
Buffer.BlockCopy(src, 0, dst, 0, sizeof(double) * src.Length);
return dst;
} //行向量→数组(循环版;泛型版)
static T[,] Row2ArrT<T>(T[] vec, int row)
{
if (vec.Length % row != 0) return null;
int col = vec.Length / row;
T[,] ret = new T[row, col];
for (int i = 0; i < vec.Length; i++)
{
ret[i / col, i % col] = vec[i];
}
return ret;
} //数组→行向量(内存复制版)
static double[] Arr2RowD(double[,] src)
{
int elem = src.GetLength(0) * src.GetLength(1);
double[] dst = new double[elem];
Buffer.BlockCopy(src, 0, dst, 0, elem * sizeof(double));
return dst;
}
}

C# 一维数组与二维数组相互转换的更多相关文章

  1. C#的一维数组和二维数组定义方式:

    一维数组: //一维数组定义与初始化 ,, };//第一种方式 , , }; //第二种方式 int[] one3; //第三种方式 one3=,,}; 二维数组: //二维数组定义与初始化 //不规 ...

  2. C# 数组、一维数组、二维数组、多维数组、锯齿数组

    C#  数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请 ...

  3. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

  4. 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)

    二维数组,锯齿数组和集合 一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = ...

  5. android JNI 一维数组、二维数组的访问与使用

    在JNI中访问JAVA类中的整型.浮点型.字符型的数据比较简单,举一个简单的例子,如下: //得到类名 jclass cls = (*env)->GetObjectClass(env, obj) ...

  6. js一维数组转换为二维数组

    function arrTrans(num, arr) { // 一维数组转换为二维数组 const iconsArr = []; // 声明数组 arr.forEach((item, index) ...

  7. 一维数组、二维数组——Java

    一. 一维数组 1.  数组是相同类型数据的有序集合 相同类型的若干个数据,按照一定先后次序排列组合而成 每个数组元素可以通过一个下标来访问它们 其中,每一个数据称作一个数组元素 2. 数组特点: 其 ...

  8. 第二篇 javascript一维数组和二维数组及方法

    一.数组 什么是数组 程序=数据+算法 数组就是一种很常见的保存批量数据的数据结构 一.定义数组 var arr1=[]; //定义了一个不包含元素的数组 ,,]; //定义了一个包含三个元素的数组 ...

  9. c#简单实现二维数组和二维数组列表List&lt;&gt;的转置

    刚看到网上一篇文章里用sql实现了行列转置.sql server 2005/2008只用一个pivot函数就可以实现sql server 2000很多行的复杂实现.提到转置,立刻想起还在求学阶段曾经做 ...

  10. Java数组之二维数组

    Java中除了一维数组外,还有二维数组,三维数组等多维数组.本文以介绍二维数组来了解多维数组. 1.二维数组的基础 二维数组的定义:二维数组就是数组的数组,数组里的元素也是数组. 二维数组表示行列二维 ...

随机推荐

  1. keycloak~正确让api接口支持跨域

    相关参考 https://leejjon.medium.com/how-to-allow-cross-origin-requests-in-a-jax-rs-microservice-d2a6aa2d ...

  2. c# - 如何在自定义 System.Text.Json JsonConverter 中使用默认序列化?

    我正在写一个 custom System.Text.Json.JsonConverter将旧数据模型升级到新版本.我已覆盖 Read()并实现了必要的后处理.但是,我根本不需要在 Write()中做任 ...

  3. Dubbo实战教程

    "Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案." ...

  4. nonatomic 带来的线程安全问题

    一.结论 一个对象对外暴露的读写属性,如果这个属性在多个线程中访问,一定会出现crash. 因此对外暴露的属性一定要考虑线程安全问题. 二.看下面的代码 下面的代码一定会crash,除非obj是ato ...

  5. 音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)

    一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统 ...

  6. 使用Logstash同步Mysql到Easysearch

    从 MySQL 同步数据到 ES 有多种方案,这次我们使用 ELK 技术栈中的 Logstash 来将数据从 MySQL 同步到 Easysearch . 方案前提 MySQL 表记录必须有主键,比如 ...

  7. 将MP4(视频)转换为MP3(音频)

    使用VLC Media Player 步骤1. 在计算机上启动VLC Media Player,点击「媒体」并选择「转换/储存」. 步骤2. 点击「加入」以浏览并打开MP4文件,然后点击「Conver ...

  8. 在阿里云WINDOWS机器上部署的JAVA SpringBoot 时不时的无效 。

    用telnet 能通.但代码的HTTP 访问不了. 解决方法,在运行时加-Dserver.address=0.0.0.0,让它监听所有: java -Dserver.address=0.0.0.0 - ...

  9. 在线XML格式化工具

    在线XML格式化工具可以帮助您轻松格式化混乱的XML代码.只需将您的XML代码复制并粘贴到文本框中,工具会自动对代码进行缩进.对齐和添加空格等操作,使代码看起来更加整洁和专业. 在线XML格式化工具

  10. Excel表格MID函数使用-截图单元格字符长度

    Excel表格MID函数使用-截图单元格字符长度 =MID(B2,1,6) //代表的是从B2单元格,从第1个字符开始,截图6个字符长度.然后双击该单元格,整个列都会截取