我有来自7个设备的10秒数据,每个设备在1D阵列中有2个通道,采样频率为51。2KHz。
我把数组分成10个time_split = np.array_split(data, 10)
然后,我将time_split
的每个元素拆分为每个设备的样本device_split = [([np.array_split(d, 7) for d in time_split]
device_split.shape
给出(10, 7, 51200)
因此,每秒7个通道中的每个通道都有51200个样本
好了,我现在有点想不明白了。我想为每个设备重建一个时间序列,例如,
对于设备0,我期望一个长度为10 x 51200的数组,即51处的10秒样本。2KHz的设备。
我试过了devices = device_split[:][0]
devices.shape
给出(7, 51200)
,因此devices[0]
仅是来自设备0的1秒数据,而不是完整的10秒数据。device_split[:][:]
只返回原始数组
什么是有效的。..
dev_0 = []
dev_1 = []
dev_2 = []
dev_3 = []
dev_4 = []
dev_5 = []
dev_6 = []
for sec in device_split:
dev_0.append(sec[0])
dev_1.append(sec[1])
dev_2.append(sec[2])
dev_3.append(sec[3])
dev_4.append(sec[4])
dev_5.append(sec[5])
dev_6.append(sec[6])
dev_0 = np.array(dev_0).flatten()
dev_1 = np.array(dev_1).flatten()
dev_2 = np.array(dev_2).flatten()
dev_3 = np.array(dev_3).flatten()
dev_4 = np.array(dev_4).flatten()
dev_5 = np.array(dev_5).flatten()
dev_6 = np.array(dev_6).flatten()
我突然想到,必须有一个更numpy
的方式来做到这一点!
有吗?
1条答案
按热度按时间kognpnkq1#
如果device_split形状为(10,7,51200)并且第二个轴对应于设备。您可以使用以下命令获取第i个设备数据数组
事实上
返回原始数组。使用“:”意味着从轴获取所有索引。你也应该读numpy indexing doc。
此外,如果您的数据是“flatten stack”,则可以重新调整数组的形状,而不是使用数组拆分
其中“-1”与剩余尺寸(see reshape doc)相匹配。