使用特定的块形状重塑二维数组

时间:2019-10-24 12:42:14

标签: python numpy

将简单的二维数组重塑为另一个数组时遇到问题。 让我们假设矩阵:

[[4 1 2  1 2 4  1 2 4]
 [2 3 0  3 0 2  3 0 2]
 [5 5 1  5 1 5  5 1 5]
 [6 6 6  6 6 6  6 6 6]]

我想做的是将其重塑为(12,3)矩阵,但是使用(4,3)块。我的意思是要得到像这样的矩阵:

[[4 1 2
  2 3 0
  5 5 1
  6 6 6

  1 2 4
  3 0 2
  5 1 5
  6 6 6

  1 2 4
  3 0 2
  5 1 5
  6 6 6]]

我已经强调了用额外的换行符来切掉这个矩阵的“想法”。 我已经尝试了numpy重塑(具有所有可用的order参数值),但仍然得到带有“混合”值的数组。

1 个答案:

答案 0 :(得分:0)

您始终可以手动执行此操作以自定义形状:

import numpy as np

data = [[4, 1, 2, 1, 2, 4, 1, 2, 4],
        [2, 3, 0, 3, 0, 2, 3, 0, 2],
        [5, 5, 1, 5, 1, 5, 5, 1, 5],
        [6, 6, 6, 6, 6, 6, 6, 6, 6]]


X = np.array(data)

Z = np.r_[X[:, 0:3], X[:, 3:6], X[:, 6:9]]
print(Z)

收益

array([[4, 1, 2],
       [2, 3, 0],
       [5, 5, 1],
       [6, 6, 6],
       [1, 2, 4],
       [3, 0, 2],
       [5, 1, 5],
       [6, 6, 6],
       [1, 2, 4],
       [3, 0, 2],
       [5, 1, 5],
       [6, 6, 6]])

请注意特殊的np.r_运算符,该运算符将行(第一轴)上的数组连接起来。它只是np.concatenate的方便别名。