在python中重塑数组

时间:2017-06-22 11:34:04

标签: python arrays numpy reshape

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

动机来自于处理图像,我想创建一个矩阵,其中行包含每个像素的RGBA值。我试过了np.array.reshape(n*m,4),但它没有做到这一点。可能与movaxisswapaxis结合使用?

1 个答案:

答案 0 :(得分:0)

最简单的方法是首先将其重塑为(4, n*m),然后只交换第一个和最后一个轴(例如使用linked code或仅使用.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]])