合并 NumPy 数组中的轴

6
我希望将 X、Y、Z numpy 数组转换为 (X*Z)*Y 的 numpy 数组。
代码(较慢):
 def rearrange(data):
        samples,channels,t_insts=data.shape
        append_data=np.empty([0,channels])
        for sample in range(0,samples):
            for t_inst in range(0,t_insts):
                channel_data=data[sample,:,t_inst]
                append_data=np.vstack((append_data,channel_data))
        return append_data.shape

我希望你能提供更好的向量化方法,如果可能的话。
1个回答

11
您可以使用np.transpose函数交换数组的 ,然后再进行重塑。
data.transpose(0,2,1).reshape(-1,data.shape[1])

或者使用np.swapaxes进行行列交换,然后再重新塑形-

data.swapaxes(1,2).reshape(-1,data.shape[1])

有没有更通用的方法?比如说我想把形状为(4,5,6,7,8,9)的数组转换成(4,5*6*8,7,9) - Gulzar
@Gulzar a.transpose(0,1,2,4,3,5) 然后重新调整形状到所需的形状。思路是 - 将要合并的轴按顺序排列,然后重新调整形状。这可能是一个相关的帖子 - https://dev59.com/k1YN5IYBdhLWcg3wFky2#47978032/ - Divakar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接