簡體   English   中英

如何有效地將熊貓數據框轉換為圖像數組?

[英]How do I efficiently convert pandas dataframe to image array?

我有一個大熊貓數據框,其中的X,Y和I列。X和Y是像素坐標,我想說是0到255之間的強度值,我希望在相應的X和Y位置上顯示它。

沒有圖像的每個像素的條目,因此未在數據框中列出的所有像素的I值都設置為0。

因此,我使用圖像尺寸初始化了二維數組img 然后,我已經嘗試過類似

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

這不起作用。 我認為簡單for -loop可以解決此問題,但我想知道是否有更有效的方法(例如,調用花哨的numpy / opencv /任何我不知道的函數... )。

您應該像這樣使用Pandas的支點功能:

df.pivot('Y', 'X', 'I').values

這將導致如下所示:

# array([[ 255,  34],
#       [  56,  nan]])

然后,您只需要將nan值替換為0。

最簡單的方法可能是使用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也具有一些不錯的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM