我正在从加速计上获取数据包。这些包含固定长度的x、y、z(各10个)加速度测量值。我想从连续的包中制作时间序列。当有一个包丢失时,我完成了上一个时间序列并开始制作一个新的
数据在两个np.array中(只是为了更清楚)。第一个包含包的索引:
share_num = np.array([1, 2, 3, 5, 8, 9, 10 ...], dtype=int)
第二个包含链接到文件包索引的数据:
share_sensor = np.array([[x1_1,y1_1,z1_1,...,x10_1,y10_1,z10_1],
[x1_2,y1_2,z1_2,...,x10_2,y10_2,z10_2],
... ], dtype=int)
这个特定示例的输出(在我的示例中是np.array的列表),因为有从1到3的连续数字:
X = [np.array([x1_1,y1_1,z1_1,...,x10_3,y10_3,z10_3]),
np.array([x1_5,y1_5,z1_5,...,x10_5,y10_5,z10_5]),
np.array([x1_8,y1_8,z1_8,...,x10_10,y10_10,z10_10]),
... ]
我的尝试是有效的,但我确信它可以改进——关于速度,尤其是为了让它更清晰。我正在列出不同长度的numpy数组
X = []
for idx, (current_num, current_sensor) in enumerate(zip(share_num, share_sensor)):
if idx == 0:
measurement = current_sensor
else:
if current_num - previous_num == 1:
measurement = np.hstack([measurement, current_sensor])
else:
X.append(measurement)
measurement = current_sensor
previous_num = current_num
X.append(measurement)
这里有一种使用numpy原语的方法:
这种方式效率更高,因为没有复制传感器数据:
相关问题 更多 >
编程相关推荐