Python中如何调整三维数组的维度顺序?
调整三维数组维度顺序的简便实现方式
当然有,不同数据处理框架里都提供了直接的内置方法,不用自己写复杂循环。下面是几种常用场景的实现方式:
NumPy 场景
直接调用transpose()方法,通过指定维度的新顺序完成转换。原数组的维度索引对应:i=0、j=1、t=2,要得到t,i,j的顺序,只需传入原维度索引的对应顺序(2, 0, 1):import numpy as np # 假设g是numpy.ndarray类型的三维数组 g_reshaped = g.transpose(2, 0, 1)PyTorch 场景
使用permute()方法,逻辑和NumPy的transpose完全一致,直接指定目标维度对应的原索引即可:import torch # 假设g是torch.Tensor类型的三维张量 g_reshaped = g.permute(2, 0, 1)TensorFlow 场景
借助tf.transpose()函数,通过perm参数传入维度顺序列表:import tensorflow as tf # 假设g是tf.Tensor类型的三维张量 g_reshaped = tf.transpose(g, perm=[2, 0, 1])原生Python列表(不推荐)
如果是纯Python嵌套列表,只能通过嵌套循环手动转换,但这种方式效率极低,数据量大时强烈建议转成上述数组/张量类型处理:# 假设g是[[[...]]]结构的三维列表 g_reshaped = [[[g[i][j][t] for i in range(len(g))] for j in range(len(g[0]))] for t in range(len(g[0][0]))]
内容的提问来源于stack exchange,提问作者statwoman
相关产品推荐
相关产品推荐

