Jeśli przeglądasz kod źródłowy numpy (python), znajdziesz sztuczkę, której używają do pisania funkcji działających na danej osi, aby użyć np.swapaxes
do ustawienia osi celu w pozycji axis = 0
. Następnie zapisują kod działający pod numerem 0-axis
, a następnie ponownie używają np.swapaxes
, aby ponownie umieścić 0-axis
w pierwotnej pozycji.
Można to zrobić tutaj tak:
import numpy as np
def rev(a, axis = -1):
a = np.asarray(a).swapaxes(axis, 0)
a = a[::-1,...]
a = a.swapaxes(0, axis)
return a
a = np.arange(24).reshape(2,3,4)
print(rev(a, axis = 2))
plony
[[[ 3 2 1 0]
[ 7 6 5 4]
[11 10 9 8]]
[[15 14 13 12]
[19 18 17 16]
[23 22 21 20]]]
Jeśli znasz składnię, której potrzebujesz, możesz włączyć ją do swojej własnej funkcji "rev"? – Makoto
Byłbym z tym w porządku, ale chcę, aby funkcja wzięła liczbę całkowitą (wymiar do odwrócenia) i zwróciła tablicę odwróconą wzdłuż tego wymiaru. Nie wiem jak przetłumaczyć (na przykład) '1' na' [:, :: - 1,:] 'i' 0' na '[:: - 1,:,:]' dla dowolnej liczby wymiary. Plasterek – Shep