gpt4 book ai didi

c# - 3D 数组到 2D 数组 - 忽略维度

转载 作者:行者123 更新时间:2023-11-30 23:20:52 24 4
gpt4 key购买 nike

我有一个包含一些数据的非常大的 3D 数组 - 2 x 10000 x 4000。我将要处理其中的一些数据,但我不需要知道第一个维度 (2)。

有没有一种简单的方法可以将我的 2 x 10000 x 4000 3D 阵列创建一个尺寸为 10000 x 4000 的 2D 阵列?这可以通过 for 循环来完成吗?是否有复制函数或类似的东西允许我将一个维度(或多个维度)的数组元素复制到一个全新的数组中?

最佳答案

有办法,但我不会推荐。这将使用不安全的指针进行复制。 (已测试)

int[,,] myArray = new int[2, 1000, 400];
int[,] myArray2 = new int[1000, 400];

var i = myArray.GetLength(1);
var j = myArray.GetLength(2);
var pageIndex = 0;

unsafe
{
fixed (void* source = &myArray[pageIndex, 0, 0])
fixed (void* dest = &myArray2[0, 0])
{
CopyMemory((IntPtr)dest, (IntPtr)source, (uint)(i*j*sizeof(int)));
}
}


[DllImport("kernel32.dll", EntryPoint = "CopyMemory", SetLastError = false)]
public static extern void CopyMemory(IntPtr dest, IntPtr src, uint count);

我看到你正在创建一个 json,这种方法在生成 json 时有点过分了。不要让自己太难受。请改用循环。

关于c# - 3D 数组到 2D 数组 - 忽略维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com