在 python 中重塑数组
Reshaping array in python
如何将 (4,n,m)
大小的 numpy 数组重塑为 (n*m,4)
数组?
动机来自处理图像,我想创建一个矩阵,其中的行包含每个像素的 RGBA 值。我试过 np.array.reshape(n*m,4)
但它没有完成这项工作。也许结合 movaxis
或 swapaxis
?
最简单的方法是先将其重塑为 (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]])
如何将 (4,n,m)
大小的 numpy 数组重塑为 (n*m,4)
数组?
动机来自处理图像,我想创建一个矩阵,其中的行包含每个像素的 RGBA 值。我试过 np.array.reshape(n*m,4)
但它没有完成这项工作。也许结合 movaxis
或 swapaxis
?
最简单的方法是先将其重塑为 (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]])