Machine learning 如何将所有信息从3d numpy阵列导出到csv文件

Machine learning 如何将所有信息从3d numpy阵列导出到csv文件,machine-learning,deep-learning,conv-neural-network,weka,Machine Learning,Deep Learning,Conv Neural Network,Weka,我试图解决上述Kaggle问题,我想导出预处理的csv,以便在weka上构建模型,但当我试图将其保存在csv中时,我丢失了一个维度,我想保留该csv中的所有信息 请帮助我了解相关代码或任何资源 谢谢 打印(缩放) |x | y | z |标签 |1.485231 |-0.661030 |-1.194153 |0 |0.888257 |-1.370361 |-0.829636 |0 |0.691523 |-0.594794 |-0.936247 |0 Fs=20 框

我试图解决上述Kaggle问题,我想导出预处理的csv,以便在weka上构建模型,但当我试图将其保存在csv中时,我丢失了一个维度,我想保留该csv中的所有信息

请帮助我了解相关代码或任何资源

谢谢

打印(缩放)
|x | y | z |标签
|1.485231    |-0.661030  |-1.194153  |0
|0.888257    |-1.370361  |-0.829636  |0
|0.691523    |-0.594794  |-0.936247  |0
Fs=20
框架尺寸=Fs*4#80
hop_size=Fs*2#40
def获取帧(df、帧大小、跃点大小):
N_特征=3
帧=[]
标签=[]
对于范围内的i(0,len(df)-帧大小,跃点大小):
x=df['x']。值[i:i+帧大小]
y=df['y']。值[i:i+帧大小]
z=df['z']。值[i:i+帧大小]
label=stats.mode(df['label'][i:i+frame_size])[0][0]
frames.append([x,y,z])
标签。附加(标签)
frames=np.asarray(frames).重塑(-1,frames\u大小,N\u特征)
标签=np.asarray(标签)
返回帧、标签
x,y=获取帧(缩放的帧x、帧大小、跳大小)
x、 形状,y形
((78728, 80, 3), (78728,))

根据您发布的链接,数据是以20 Hz频率采样的时间序列加速计/陀螺仪数据,每个样本都有一个标签。他们希望将时间序列聚合到帧中(相应的标签是给定帧中最常见的标签)

因此,
frame\u size
是一帧中的样本数,
hop\u size
是滑动窗口在每次迭代中向前移动的量。换句话说,帧重叠了50%,因为
hop\u size=frame\u size/2

因此,在最后,您将得到一个长度为80的78728帧的3D数组,每个数组有3个值(
x
y
z

编辑:要回答有关如何导出为CSV的新问题,您需要将3D帧阵列“展平”为2D阵列,因为这是CSV所代表的。有多种不同的方法可以做到这一点,但我认为最简单的方法可能只是将最后两个维度连接起来,这样每一行都是一个帧,由240个值组成(每个值有80个样本,每个样本有3个坐标)。然后将标签连接为最后一列

x_2d=np.重塑(x,(x.shape[0],-1))
full=np.连接([x,y],轴=1)
作为pd进口熊猫
df=pd.数据帧(完整)
df.to_csv(“frames.csv”)
如果还需要正确的列名:

columns=[]
对于范围内的i(1,x.shape[1]+1):
extend([f“{i}X”、f“{i}Y”、f“{i}Z]”)
列。追加(“标签”)
df=pd.DataFrame(完整,列=列)

谢谢您的解释。只是想知道为什么我们在x和y变量中得到不同形状的数据?这两个变量之间的区别是什么?x是实际帧数据,y是标签数组,因此y仅为1D。此外,您编辑了该问题,因此它现在是一个不同的问题。相反,你应该在问题的底部添加信息,这样人们就不会感到困惑。是的@Aaron因为你提供了解决方案,我可以继续,但后来卡住了,实际上,我只想要csv中的一个数据文件,而不是两个数据文件,即x和y,有什么方法可以在一个csv文件中导出所有信息吗?我已经更新了答案。