如何将NumPy四维数组维度从(2,100,78,78)调整为(100,78,78,2)?
NumPy数组轴重排解决方案
你的数组初始定义为:
import numpy as np my_array = np.arange(1216800).reshape(2, 100, 78, 78)
当前shape是(2, 100, 78, 78),要改成(100, 78, 78, 2),之前的交换操作完全没找对方向——你那是交换数组里局部切片的元素,根本不是调整整个轴的顺序,当然没用。
给你两个直接有效的方法:
用
transpose()指定轴顺序:my_array = my_array.transpose(1, 2, 3, 0)原数组的轴索引对应关系是:0→2,1→100,2→78,3→78。这里把轴1、2、3保持原有顺序放在前三位,把轴0(长度为2的维度)移到最后,刚好得到目标shape。
用
moveaxis()移动目标轴:my_array = np.moveaxis(my_array, 0, -1)这个方法更直观:直接把第0轴(第一个维度)移动到最后一个位置,其他轴顺序不变,结果和上面完全一致。
验证一下:执行完上面任意一行代码后,打印my_array.shape,就能看到输出是(100, 78, 78, 2)。
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

