gpt4 book ai didi

c - 在 C 中将数组从 1D reshape 为 ND

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:18 27 4
gpt4 key购买 nike

我在尝试自己实现它时遇到了很多麻烦,所以如果有人可以指出或描述一种算法,我将非常感激。

问题陈述

给定一维扁平化指针 int* i 看起来像这样 {1,2,3,4},并给定一个维度列表,形式为列表 {2,2} reshape 一维数组以符合指定的维度。总的来说,在这个过程之后,数组应该看起来像 {{1,2},{3,4}}

我基本上是在问是否有人知道 numpy.reshape 中使用的算法。

最佳答案

中的 n 维数组只不过是用于计算简单数组内的偏移量的语法糖,它们在内存中看起来是一样的(一个连续的 block )。因此,“ reshape ”它真的没有意义,正如这个小示例所展示的:

#include <stdio.h>

int data[] = {1,2,3,4};

int main(void)
{
int *i = data;

for (int n = 0; n < 4; ++n)
{
printf("i[%d] = %d\n", n, i[n]);
}

int (*j)[2] = (void *)i;

for (int n1 = 0; n1 < 2; ++n1)
{
for (int n2 = 0; n2 < 2; ++n2)
{
printf("j[%d][%d] = %d\n", n1, n2, j[n1][n2]);
}
}

return 0;
}

输出:

i[0] = 1
i[1] = 2
i[2] = 3
i[3] = 4
j[0][0] = 1
j[0][1] = 2
j[1][0] = 3
j[1][1] = 4

关于c - 在 C 中将数组从 1D reshape 为 ND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44025978/

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