2013-03-06 87 views
13

來索引numpy的陣列的中間點,你可以這樣做:索引numpy數組的中間值?

x = np.arange(10) 
middle = x[len(x)/4:len(x)*3/4] 

是否有索引的數組中的簡寫?例如,n2n元素關閉到len(x)/2?有沒有這個好的n維版本?

+0

我不認爲有除了你創造的東西之外,它是一種更好的方式。庫中最類似的東西可能是['np.fft.fftshift'](http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fftshift.html),它將數組移到將中間放在索引0處。 – Jaime 2013-03-06 21:07:23

+0

是的,這是我考慮的另一個選項,但它不是更好:您需要執行'x = np.concatenate([np.fftshift [:n],np。 fftshift [-n:]])'或類似的。 – keflavich 2013-03-07 00:32:50

+1

這似乎只是使這個函數(例如,'mid = lambda x:x [len(x)/ 4:len(x)* 3/4]')將是最簡單的解決方案。 – cge 2013-03-07 22:18:47

回答

5

cge說,最簡單的方法就是把它變成一個lambda函數,就像這樣:

x = np.arange(10) 
middle = lambda x: x[len(x)/4:len(x)*3/4] 

或n維的方法是:

middle = lambda x: x[[slice(np.floor(d/4.),np.ceil(3*d/4.)) for d in x.shape]] 
+0

快進4年,現在會產生警告「VisibleDeprecationWarning:使用非整數而不是整數將在未來導致錯誤」。 – kabammi 2017-10-31 23:41:36