2013-06-29 18 views

Odpowiedz

7

użyłbym krotka slice obiektów tego:

def reversedim(M,k=0): 
    idx = tuple((slice(None,None,-1) if ii == k else slice(None) 
      for ii in xrange(M.ndim))) 
    return M[idx] 
+6

@NilsWerner Nie sądzę. Zobacz [tutaj] (http://docs.scipy.org/doc/numpy/user/basics.indexing.html) - "Zwróć uwagę, że plasterki tablic nie kopiują wewnętrznych danych w tablicy, ale także dają nowe widoki oryginalnych danych . " –

9

Można też skonstruować krotka slice obiektów, takich jak @ali_m sugeruje, albo zrobić coś takiego:

reversed_arr = np.swapaxes(np.swapaxes(arr, 0, k)[::-1], 0, k) 

To umieszcza pożądaną oś z przodu krotki kształtu, następnie odwraca tę pierwszą oś, a następnie przywraca ją do pierwotnej pozycji.

Niektórzy uważają, że takie podejście nie ma czytelności, ale nie zgadzam się z tym.

+0

Ponieważ zwraca widok, tablica nie jest kopiowana, ładne podejście. Zauważyłem też, że to podejście jest najbardziej eleganckie, gdy tablica na LHS musi zostać zmieniona w danej osi. – dashesy

Powiązane problemy