Csharp/C#教程:如何裁剪2Darrays的分段?分享


如何裁剪2Darrays的分段?

我有一个2D数组声明为new byte[w, h] 。 我想在给定坐标(x1,y1)(x2,y2)下裁剪出该数组的子部分。 最快的方法是什么? 有没有“切片”2Darrays的方法?

你可以使用Array.Copy :

 int w2 = x2 - x1 + 1; int h2 = y2 - y1 + 1; byte[,] array2 = new byte[w2, h2]; for (int i = 0; i < w2; i++) { Array.Copy(array1, (i+x1)*h + y1, array2, i*h2, h2); } 

对于大型arrays,这可能会更快。 然而,两个嵌套循环更具可读性。

我想不出更快的方法,但你可以使用两个嵌套循环:

 byte[,] array2 = new byte[x2 - x1, y2 - y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { array2[i-x1, j-y1] = array[i, j]; } } 

对于锯齿状数组,您可以使用linq查询:

上述就是C#学习教程:如何裁剪2Darrays的分段?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)

 IEnumerable x = array3.Skip(x1) .Take(x2-x1) .SelectMany(a => a.Skip(y1).Take(y2-y1)); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/942688.html

(0)
趣味编程趣味编程
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐