![](/img/trans.png)
[英]How to efficiently convert Pandas Dataframe into a multidimensional numpy array?
[英]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.