【问题标题】:How to reshape numpy arrays to turn rows into columns如何重塑numpy数组以将行变成列
【发布时间】:2021-12-27 20:38:25
【问题描述】:

假设我有以下形状为 3x3x2 的 numpy 数组:

import numpy as np
X,Y = np.arange(3),np.arange(3)
xy = np.array([[(x, y) for x in X] for y in Y])

上面的数组xy由以下给出:

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

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

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

如何将上面的数组重塑为以下数组

xy_reshaped = 
[[0 1 2 0 1 2 0 1 2],
[0 0 0 1 1 1 2 2 2]]

我相信我正在尝试将以前的数组行转换为新的数组列。然而,我也失去了一个轴,因为新数组的形状为xy_reshaped.shape = (2,9)(没有像原始数组那样的第三轴)。

np.reshape 只能设置为按行和按列读取元素,两种排序都不适用于上述情况。

是否有简单的解决方案来进行整形?

【问题讨论】:

  • 抱歉,您当前的示例有很多重复,因此尚不清楚哪些元素放在哪里,您能否举一个元素独特的示例或更清楚地显示转换应如何映射元素?

标签: python numpy multidimensional-array


【解决方案1】:

做明显的重塑:

In [304]: xy.reshape(9,2)
Out[304]: 
array([[0, 0],
       [1, 0],
       [2, 0],
       [0, 1],
       [1, 1],
       [2, 1],
       [0, 2],
       [1, 2],
       [2, 2]])

现在只需转置:

In [305]: xy.reshape(9,2).transpose()
Out[305]: 
array([[0, 1, 2, 0, 1, 2, 0, 1, 2],
       [0, 0, 0, 1, 1, 1, 2, 2, 2]])

还有其他方法可以做到这一点,但这是最明显且易于理解的。

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2021-03-21
    • 2017-11-11
    • 2021-08-06
    相关资源
    最近更新 更多