Python 在4D阵列中插入阵列(Numpy)
我从加速度计生成的数据中提取了一些特征,我有以下阵列: 带有40个值的X_mfccs_处理列表 Y_mfccs_处理列表,包含40个值 Z_mfccs_处理列表,具有40个值 X_平均值1 你的平均值是1 Z_平均值1 目前,我能够创建一个3D数组[shape=1,40,3],并将我的mfcss数组插入其中Python 在4D阵列中插入阵列(Numpy),python,arrays,numpy,Python,Arrays,Numpy,我从加速度计生成的数据中提取了一些特征,我有以下阵列: 带有40个值的X_mfccs_处理列表 Y_mfccs_处理列表,包含40个值 Z_mfccs_处理列表,具有40个值 X_平均值1 你的平均值是1 Z_平均值1 目前,我能够创建一个3D数组[shape=1,40,3],并将我的mfcss数组插入其中 self.extracted_features = np.ndarray(shape=(1, len(self.X_mfccs_processed), 3)) self.extrac
self.extracted_features = np.ndarray(shape=(1, len(self.X_mfccs_processed), 3))
self.extracted_features[:,:,0] = self.X_mfccs_processed
self.extracted_features[:,:,1] = self.Y_mfccs_processed
self.extracted_features[:,:,2] = self.Z_mfccs_processed
我的问题是:如何创建一个4D数组[shape=1,40,1,3],并在其中存储我的平均值?通常np.ReformateSelf.extracted_特征,1,40,1,3效果很好
形状必须不同才能存储平均值。没有足够的空间
1,40,1,6或1,40,2,3
self.extracted_features = np.ndarray(shape=(1, len(self.X_mfccs_processed), 2, 3))
self.extracted_features[:,:,0,0] = self.X_mfccs_processed
self.extracted_features[:,:,0,1] = self.Y_mfccs_processed
self.extracted_features[:,:,0,2] = self.Z_mfccs_processed
self.extracted_features[:,:,1,0] = self.X_mean
self.extracted_features[:,:,1,1] = self.Y_mean
self.extracted_features[:,:,1,2] = self.Z_mean
看起来形状合理
对于1,40,1,6
self.extracted_features = np.ndarray(shape=(1, len(self.X_mfccs_processed), 1, 6))
self.extracted_features[:,:,:,0] = self.X_mfccs_processed
self.extracted_features[:,:,:,1] = self.Y_mfccs_processed
self.extracted_features[:,:,:,2] = self.Z_mfccs_processed
self.extracted_features[:,:,:,3] = self.X_mean
self.extracted_features[:,:,:,4] = self.Y_mean
self.extracted_features[:,:,:,5] = self.Z_mean
对于1,40,2,3
self.extracted_features = np.ndarray(shape=(1, len(self.X_mfccs_processed), 2, 3))
self.extracted_features[:,:,0,0] = self.X_mfccs_processed
self.extracted_features[:,:,0,1] = self.Y_mfccs_processed
self.extracted_features[:,:,0,2] = self.Z_mfccs_processed
self.extracted_features[:,:,1,0] = self.X_mean
self.extracted_features[:,:,1,1] = self.Y_mean
self.extracted_features[:,:,1,2] = self.Z_mean
我应该提到的是,这会使平均值重复40次。这对存储是不利的,但如果你做一些机器学习或数字运算,这可能是一个很好的折衷。或者,您可以制作1,41,1,3形状。要制作数组,更好的方法是:
self.extracted_features = np.array([X_mfccs_processed,Y_mfccs_processed,Z_mfccs_processed]).T[None,...]
或相当于:
self.extracted_features = np.array([X_mfccs_processed,Y_mfccs_processed,Z_mfccs_processed]).T.reshape(1,-1,3)
但是,不能使用形状1添加另一个标注并在其中插入平均值。标注值是沿该标注的图元数。一个简单的思考方法是,形状为1,N的矩阵是1xN矩阵,这并不意味着你可以在第一维中插入平均值,在第二维中插入大小为N的列表。你需要想出另一个想法来存储你的手段。我建议使用单独的数组,形状为1,3,1:
并使用类似的索引来访问平均值。另一种选择是使用字典。根据您的应用程序,您可以选择一个更简单和/或更快的轴。为什么轴0和轴2的尺寸为1?另外,您希望如何存储这些平均值?