【问题标题】:Reshaping array in python在python中重塑数组
【发布时间】:2017-06-22 11:34:03
【问题描述】:

如何将 (4,n,m) 大小的 numpy 数组重塑为 (n*m,4) 数组?

动机来自处理图像,我想创建一个矩阵,其中行包含每个像素的 RGBA 值。我试过np.array.reshape(n*m,4),但它没有完成这项工作。也许与movaxisswapaxis 结合使用?

【问题讨论】:

标签: python arrays numpy reshape


【解决方案1】:

最简单的方法是先将其重塑为(4, n*m),然后交换第一个轴和最后一个轴(例如使用transpose 或简单地使用.T 属性):

arr = arr.reshape(4, n*m).T   # assuming your array is called "arr"

例如:

>>> import numpy as np
>>> n, m = 20, 30
>>> arr = np.arange(4*n*m).reshape(4, n, m)
>>> arr = arr.reshape(4, n*m).T
>>> arr
array([[   0,  600, 1200, 1800],
       [   1,  601, 1201, 1801],
       [   2,  602, 1202, 1802],
       ..., 
       [ 597, 1197, 1797, 2397],
       [ 598, 1198, 1798, 2398],
       [ 599, 1199, 1799, 2399]])

【讨论】:

  • arr.transpose(1,2,0) 可能比默认的(2,1,0) 更好。
  • @hpaulj 在transpose 的时候,数组只有二维。
猜你喜欢
  • 2021-06-05
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2011-10-01
  • 2019-05-05
相关资源
最近更新 更多