我有一个包含点云的数组(大约100个ladar点)。我需要尽快创建一组numpy数组。
sweep = np.empty(
shape=(len(sweep.points),),
dtype=[
('point', np.float64, 3),
('intensity', np.float32),
## ..... more fields ....
]
)
for index, point in enumerate(sweep.points):
sweep[index]['point'] = (point.x, point.y, point.z)
sweep[index]['intensity'] = point.intensity
## ....more fields...
编写显式循环非常低效且缓慢。有没有更好的方法可以解决这个问题?
答案 0 :(得分:2)
使用列表推导来格式化数据并将其直接传递给numpy数组要快一些:
np.array([((point.x, point.y, point.z), point.intensity)
for point in points],
dtype=[('point', np.float64, 3),
('intensity', np.float32)])