Skip to main content
 首页 » 编程设计

python之改变 ndarray 的形状

2025年05月04日16powertoolsteam

import numpy as np 
​ 
image1 = np.zeros((120, 120)) 
image2 = np.zeros((120, 120)) 
image3 = np.zeros((120, 120)) 
​ 
pack1 = np.array([image1,image2,image3]) 
pack2 = np.array([image1,image2,image3]) 
​ 
result = np.array([pack1,pack2]) 
 
print result.shape 

结果是: (2, 3, 120, 120)

问题:如何在不混合的情况下使用相同的数据创建形状为 (2,120,120,3) 的数组?

请您参考如下方法:

使用np.rollaxis将单个轴移动(确定,滚动)到指定位置:

>>> a.shape 
(2, 3, 11, 11) 
>>> np.rollaxis(a, 0, 4).shape 
(3, 11, 11, 2) 

这里的语法是“滚动第 0 个轴,使其成为新数组中的第 4 个”。

请注意,rollaxis 创建了一个 View 并且没有复制:

>>> np.rollaxis(a, 0, 4).base is a 
True 

另一种(通常更易读)的方法是使用 np.transpose 接受轴放置位置的元组这一事实。观察:

>>> np.transpose(a, (1, 2, 3, 0)).shape 
(3, 11, 11, 2) 
>>> np.transpose(a, (1, 2, 3, 0)).base is a 
True 

这里的语法是“置换轴,使原始数组中的第 0 轴成为新数组中的第 4 轴”