2012-08-28 52 views
0

我從二進制文件讀取數據到numpy數組與np.fromfile。這些數據代表了網格上的值,它們的間距和形狀是已知的,因此將一維數組重新整形爲網格的形狀並用plt.imshow進行繪圖是沒有問題的。因此,如果我有N網格,我可以繪製N子圖顯示一個圖中的所有數據,但我真正想要做的是將它們繪製爲一個圖像。不同網格間距的拼接網格

我不能堆疊數組,因爲每個數組中的數據間隔不同,因爲它們具有不同的形狀。

我的想法是「超採樣」所有網格的最佳網格,堆棧和情節的間距,但我不知道這是一個好主意,因爲這些網格文件可能會變得非常大。

順便說一句:比方說,我想這樣做,我怎麼去從:

0, 1, 2 
    3, 4, 5 

到:

0, 0, 1, 1, 2, 2 
    0, 0, 1, 1, 2, 2 
    3, 3, 4, 4, 5, 5 
    3, 3, 4, 4, 5, 5 

我接受任何建議。

感謝,

沙哈爾

+0

你可以像'loop'那樣寫出像循環一樣的元素,它會將每個元素追加到矩陣 –

回答

0

,如果你只是情節的答案是:沒有。 plt.imshow有一個關鍵字參數extent,您可以使用它來縮放繪圖時的想象。除此之外,我會建議scipy.ndimage.zoom,order = 0,它等價於重複值,但您可以輕鬆地縮放到任意大小,或者使用不同的順序來獲得平滑的插值。 np.tile也可能是一個非常簡單的縮放選項。

下面是一個例子:

a = np.arange(9).reshape(3,3) 
b = np.arange(36).reshape(6,6) 

plt.imshow(a, extent=[0,1,0,1], interpolation='none') 
plt.imshow(b, extent=(1,2,0,1), interpolation='none') 
# note scaling is "broke" 
plt.xlim(0,2) 

過程中得到兩個同一顏色的範圍,你應該添加vim=...vmax關鍵字。

+0

我使用'im.show'。 '範圍'不是我正在尋找的,我需要每個網格/數組/文件/無論你想調用它的整個範圍。我不需要放大,我需要把所有東西放在一起,以便我可以在一個圖像中繪圖。 – Shahar

+0

@Shahar,所以你想對他們做實際的_calculations_而不只是繪製它們。然後使用'scipy.ndimage.zoom',除非你沒有scipy。如果這一切都非常規律,並且需要對RAM進行額外的小心處理,那麼可能還有其他選擇,但隨後請告訴我們更多關於你實際上對他們做了什麼,因爲關鍵的一步似乎不僅僅是策劃。 – seberg

+0

我做了一些計算,但這不是問題。正如我上面所描述的,我可以通過'plt.imshow'看到我所做的所有操作的結果,但是一旦每個「patch」已經被處理,我想將它們連接在一起成爲一個圖像。我意識到我的圖像的某些部分將是較低分辨率補丁的過採樣版本,但我並不在意這一點。 – Shahar