2014-02-10 81 views
1

我對numpy比較陌生,但已經開始使用它來讀寫h5文件。我有圖像數據,我計算了一些區域統計數據,將給定區域中的每個像素值讀入h5文件。但是,我有很多像素值(可能是數千萬),並且希望對這些數據進行二次採樣,以便我能夠減小數據大小,但保留數據的一般分佈。subsample numpy數組?

我想知道是否有一個簡單的方法來取樣每個數組的第200個值?

我會提出我已經有的代碼,但我的代碼只能讀取我現有的數據 - 我完全卡在我如何子樣本,所以沒有什麼可以顯示到目前爲止。

感謝

+0

你的問題是有點不清楚;你關心的是磁盤上的大小還是內存中的大小?如果你不關心磁盤空間;您可以從h5文件讀取切片視圖。這仍然會很慢,因爲您仍然需要從磁盤讀取所有內容。然而,二次取樣最好通過對所有像素進行求和來完成;否則你可能會得到令人討厭的鋸齒僞影。如果磁盤空間沒有異議,則可以在h5文件中存儲整個mipmap。這將提供最佳的性能和質量,但會增加而不是減少磁盤空間的使用。 –

回答

8

您可以使用數組切片:

>>> import numpy as np 
>>> a = np.eye(1000) 
>>> a[::200, ::200] 

array([[ 1., 0., 0., 0., 0.], 
     [ 0., 1., 0., 0., 0.], 
     [ 0., 0., 1., 0., 0.], 
     [ 0., 0., 0., 1., 0.], 
     [ 0., 0., 0., 0., 1.]])