2013-03-06 28 views
13

indeksować środkowe punkty w numpy tablicy, można to zrobić:Indeksuj środek tablicy numpy?

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

Czy jest skrótem do indeksowania środku tablicy? np. elementy n lub 2n zamykają się na len(x)/2? Czy istnieje fajna n-wymiarowa wersja tego?

+0

tam nie myśleć jest lepszym sposobem niż to, co stworzyłeś. Najbardziej podobną rzeczą w bibliotece jest prawdopodobnie ['np.fft.fftshift'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fftshift.html), która przesuwa tablicę do umieść środek na indeksie 0. – Jaime

+0

Tak, to była inna opcja, którą rozważałem, ale nie jest to o wiele lepsza: trzeba by zrobić 'x = np.concatenate ([np.fftshift [: n], np. fftshift [-n:]]) lub podobne. – keflavich

+1

Wygląda na to, że po prostu jest to funkcja (np. "Mid = lambda x: x [len (x)/4: len (x) * 3/4]") byłoby najprostszym rozwiązaniem. – cge

Odpowiedz

5

cge jak powiedział, najprostszym sposobem jest przekształcenie go w funkcji lambda, tak:

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

lub sposób n-wymiarowej jest:

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

szybkie przewijanie do przodu 4 lata, a to teraz generuje ostrzeżenie "VisibleDeprecationWarning: użycie liczby niecałkowitej zamiast liczby całkowitej spowoduje błąd w przyszłości". – kabammi