我有一个大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
也具有一些不错的功能。