【问题标题】:Reshaping chunks of np array重塑 np 数组的块
【发布时间】:2020-10-17 09:26:30
【问题描述】:

我有一个名为“all_runs”的 numpy 数组,它由我在一个函数中附加的数百个 np 数组组成。以下是我追加两个数组时的示例:

[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]    

我想把它改造成如下:


0      1       2
0      1       2
0      1       2
0      1       2
0      1       2
0      1       2
0      1       2
0      1       2

我试过这个:

df = pd.DataFrame(all_runs.reshape(3, 8))

但它没有给出我想要的结果:

0      0       0
0      1       1
1      1       2
2      2       2
0      0       0
0      1       1
1      1       2
2      2       2

有没有一种有效的方法来拆分数组并按照上面显示的格式对其进行整形?

【问题讨论】:

  • 我想你的意思是reshape(8, 3)。另外,我不认为这可以重新塑造成你想要的样子。是否有充分的理由重塑而不是创造?

标签: python arrays numpy reshape


【解决方案1】:

您最好以不同的方式创建数组,这样您就不必重新调整数组的形状。在创建数组时将数组格式化为它的形状可能比追加然后整形更简单。

无论如何,在重塑时都必须考虑轴的顺序。它最终有点令人费解,但你可以试试这个:

arr = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2])
np.vstack(arr.reshape([2, -1]).reshape(2, 3, -1).transpose([0, 2, 1]))

输出:

array([[0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2]])

【讨论】:

    【解决方案2】:

    对数组进行排序,然后将其重塑为。

    import numpy as np
    test = [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
    test = np.asarray(test)
    np.sort().reshape(3,8)
    

    输出

    array([[0, 0, 0, 0, 0, 0, 0, 0],
       [1, 1, 1, 1, 1, 1, 1, 1],
       [2, 2, 2, 2, 2, 2, 2, 2]])
    

    【讨论】:

      【解决方案3】:

      一行:

      a = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2])
      print(np.vstack(np.hsplit(a.reshape(6,4).transpose(),2)))
      

      输出:

      [[0 1 2]
       [0 1 2]
       [0 1 2]
       [0 1 2]
       [0 1 2]
       [0 1 2]
       [0 1 2]
       [0 1 2]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-25
        • 2019-07-17
        • 2019-01-09
        • 1970-01-01
        • 2011-12-22
        • 2017-10-15
        • 2023-01-23
        • 1970-01-01
        相关资源
        最近更新 更多