我想知道如何旋转90度的N维矩阵(表示为1d阵列)。我知道2d的情况是很常见的,但我想知道如何推广到3,4或nd(类似于在python中调用numpy.rot90(A)的行为(沿轴旋转(0,1 )这是默认行为)。
我对2d情况的代码如下:
void rot90 (int * A, int * out, int height, int width) {
for (int w = 0; w < width; w++) {
for(int h = 0; h < height; h++) {
int in = A[height * h + w];
int index = height * w + (height - (h + 1));
out[index] = in;
}
}
}
我知道我的循环可能看起来像
for i in innermost dim:
for i2 in inner dim:
for w in width:
for h in height:
但不确定如何继续。
发布于 2018-06-07 14:06:45
在python上,你可以尝试交换两个轴和翻转一个轴。
例如:A = numpy.moveaxis(A,(0,1,2),(0,2,1))numpy.flip(A,axis = 2)
https://stackoverflow.com/questions/-100004785
复制相似问题