2014-10-20 42 views
1

我試圖找出一種方法來轉換,看起來像這樣XYZ數據...XYZ格式網格格式使用Python 3.4

X Y Data 

1 11 101 

1 12 102 

1 13 103 

1 14 104 

1 15 105 

2 11 101 

2 12 102 

2 13 103 

2 14 104 

2 15 105 

3 11 101 

3 12 102 

3 13 103 

3 14 104 

3 15 105 

4 11 101 

4 12 102 

4 13 103 

4 14 104 

5 15 105 

5 11 101 

5 12 102 

5 13 103 

5 14 104 

5 15 105 

到網格格式看起來像這樣...

NAN 1 2 3 4 5 

11 101 102 103 104 105 

12 101 102 103 104 105 

13 101 102 103 104 105 

14 101 102 103 104 105 

15 101 102 103 104 105 

我最初嘗試使用numpy模塊,感覺像數組操作的正確路徑,但我似乎無法找出解決方案。任何想法或幫助指向正確的方向我表示讚賞。

回答

0

您可以使用np.unique()得到X和Y的條目,比如:

import numpy as np 

X = np.array([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5]) 
Y = np.array([11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15]) 

Data = np.array([101, 102, 103, 104, 105] * 5) 

res = Data.reshape((5, 5)) 
xvals = np.insert(np.unique(X), 0, 0) 
yvals = np.array([np.unique(Y)]).T 

print(np.vstack(([xvals], np.hstack((yvals, res))))) 

注意,我把0而不是NaN因爲NaN僅支持在numpy花車(見here)。如果你真的想要NaN,我建議你使用float數組。否則,您可以始終將其設置爲永不發生的值(例如,如果您使用純正數據,則使用-1)。或者,甚至不關心那個領域的內容。