有创建数组块的相反方法吗?

时间:2019-05-07 19:36:11

标签: python arrays multidimensional-array

我有一个形状为(4,4)的数组,我将他除以(2,2)的块,是否可以用相反的方式再次获得(4,4)形状?

示例:

array_4x4 = [[100,123,3,7],
         [134,43,67,90],
         [9,10,11,12],
         [13,14,15,16]]

blocks_2x2 = [[100,123,134,43],[3,7,67,90],[9,10,13,14],[11,12,15,16]]

如何再次获得第一个形状?

blocks_2x2 = [[100,123,134,43],[3,7,67,90],[9,10,13,14],[11,12,15,16]]
num_blocks = 4
final_ = []
for i in range(num_blocks):
   for j in range(2):
       final_.append(np.array(blocks_2x2 [i])[:,j])

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以不使用numpy来执行此操作,如下所示:

blocks_2x2 = [[1,2,5,6],[3,4,7,8],[9,10,13,14],[11,12,15,16]]

result = []
for i in range(0,len(blocks_2x2)-1,2):
    for j in range(2):
        result.append(blocks_2x2[i][j*2:j*2+2] + blocks_2x2[i+1][j*2:j*2+2])

print(result)

输出:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

我们迭代blocks_2x2列表中的每两个子列表,并将两个列表的前一半和后一半加入。请注意,仅针对您提供的数据对特定代码进行了测试。