【问题标题】:reshaping 2-d array using specific block shape [duplicate]使用特定块形状重塑二维数组
【发布时间】:2020-02-20 19:27:28
【问题描述】:

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

[[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]]

我已经突出显示了通过附加换行符切割此矩阵的“egde”。 我已经尝试过 numpy reshape(使用所有可用的订单参数值),但我仍然得到带有“混合”值的数组。

【问题讨论】:

  • 就用np.reshape,像这样:data.reshape(3,4,3)

标签: python numpy


【解决方案1】:

对于自定义重塑,您始终可以手动执行此操作:

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 的一个方便的别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2021-03-15
    • 2017-01-02
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 2020-08-10
    相关资源
    最近更新 更多