如何从形状(19601,1000,12)的X_train提取矩阵并合并为(12*19601,1000)?
解决方法
不用手动遍历或者列表推导式折腾,用numpy的轴变换和重塑就能一步搞定,效率还高:
假设你的X_train是numpy数组,直接执行以下代码:
import numpy as np # 先交换每个子矩阵的轴,把(1000,12)转成(12,1000),整体形状变为(19601,12,1000) # 再把前两个轴合并成一个,自动计算总长度为19601*12,得到目标形状 result = X_train.swapaxes(1, 2).reshape(-1, 1000)
或者用transpose实现同样的效果:
result = X_train.transpose(0, 2, 1).reshape(-1, 1000)
为什么你的列表推导式没用?
你写的[sig[i][j][k] for sig in X_train]索引逻辑完全错误:sig是X_train里的单个元素,形状是(1000,12),根本没有第三个索引k,这样写要么报错,要么只能取出零散的单个数值,完全达不到合并矩阵的目的。
内容的提问来源于stack exchange,提问作者stone327
相关产品推荐
相关产品推荐

