在numpy数组中合并轴

Abh*_*tia 2 python arrays numpy vectorization

我想将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
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种更好的矢量化方法

Div*_*kar 6

您可以np.transpose用来交换rowscolumns然后重塑-

data.transpose(0,2,1).reshape(-1,data.shape[1])
Run Code Online (Sandbox Code Playgroud)

或用于np.swapaxes进行行和列的交换,然后重塑-

data.swapaxes(1,2).reshape(-1,data.shape[1])
Run Code Online (Sandbox Code Playgroud)