我有一个大pandasdataframe,其中的X,Y列为I. X和Y,它们是像素坐标,我想说的是0到255之间的强度值,我希望在相应的X和Y位置上显示它。

没有图像的每个像素的条目,因此未在dataframe中列出的所有像素的I值都设置为0。

因此,我使用图像尺寸初始化了two-dimensional数组img。然后,我已经尝试过类似

img.at[df.X,df.Y] = df.I

这不起作用。我认为一个简单的for-loop可以解决此问题,但我想知道是否有更有效的方法(例如,调用一个我不知道的高级numpy/opencv/whatever函数...)。

分析解答

最简单的方法可能是使用scipy.sparse数组,因为coo_matrix的构建与输入相同。

from scipy.sparse import coo_matrix

sparse_image = coo_matrix((df.I, (df.X, df.Y)), shape = image.shape)
image = sparse_image.todense()

如果在此步骤之前累积I值,则coo_matrix也具有一些不错的功能。