我有一个 numpy 数组,它以一种棘手的方式交错,但我无法找到一种简单的方法来解除交错。假设 (84, 132) 矩阵为:
0 100 200 ...
1 101 201 ...
2 102 202 ...
...
83 183 283 ...
我想从第一列开始每隔四个元素,然后从第二行开始每隔四个元素,然后从第三行开始每隔四个元素,然后从第四行开始每隔四个元素。 (产生四个新列。)然后我想重复第二列,依此类推。所以我想要的 (21, 528) 结果是:
0 1 2 3 100 101 102 103 200 ...
4 5 6 7 104 105 106 107 204 ...
8 9 10 11 108 109 110 111 208 ...
...
80 81 82 83 180 181 182 183 283 ...
我可以用循环来完成此操作,转换 (84, 132) 数组a
到 (21, 528) 数组b
:
b = np.zeros(shape=(21, 132*4))
for y in range(0, 21):
for x in range(0, 132):
for s in range(0, 4):
b[y, x * 4 + s] = a[y * 4 + s, x]
有没有更好的方法来使用 numpy 操作来做到这一点?
(上下文:这是 8086 处理器中微码 ROM 的物理排列,我正在尝试对这些位进行重新排列以进行分析。)