【发布时间】:2020-10-06 20:11:08
【问题描述】:
背景:我在 2D 空间中有数百万个点,(x_position, y_position, value) 与每个点相关联。我试图通过创建一个图像来总结这些点,其中每个像素可以包含多个点。总而言之,每个像素存储图像中(x_pixel, y_pixel) 位置处values 的总和。
问题:我怎样才能有效地做到这一点?目前,我的代码是这样的:
image = np.zeros((4096,4096))
for each point in data:
x_pixel, y_pixel = convertPointPos2PixelPos(point)
image[x_pixel, y_pixel] += point.getValue()
但此代码完成的 ETA 是 450 小时,这是不可接受的。有没有办法并行化这个?代码多次写入同一个image[x,y] 索引。我发现建议使用 multiprocessing 的 StackOverflow 帖子,但我认为需要 lock 来防止竞争条件意味着这将花费与没有并行化一样多的时间。
【问题讨论】:
-
这很大程度上取决于
convertPointPos2PixelPos是否可以向量化。在最坏的情况下,您正在使用旨在处理数组的方法进行迭代,而不是像 in this case -
重点是什么?什么是数据?请发布 MCVE。
标签: python numpy image-processing parallel-processing 2d