Wydaje się, że jest to pytanie, a przykład pochodzi z książki Python for Data Analysis autorstwa Wesa McKinneya. Ta funkcja programu transpose
została omówiona w rozdziale 4.1. Transpozycja tablic i zamiana osi .
W przypadku tablic o wyższych wymiarach transpose
zaakceptuje krotkę numerów osi, aby permutować osie (dla dodatkowego zginania umysłu).
Tutaj „permute” oznacza „przegrupowanie”, czyli przestawienie kolejności osi.
Liczby w .transpose(1, 0, 2)
określają sposób zmiany kolejności osi w porównaniu z oryginałem. Używając .transpose(1, 0, 2)
, mamy na myśli „Zmień pierwszą siekierę na drugą”. Jeśli użyjemy .transpose(0, 1, 2)
, tablica pozostanie taka sama, ponieważ nie ma nic do zmiany; jest to kolejność domyślna.
Przykład w książce z (2, 2, 4)
tablicą rozmiarów nie jest zbyt jasny, ponieważ pierwsza i druga oś mają ten sam rozmiar. Więc wynik końcowy nie wydaje się zmieniać, z wyjątkiem zmiany kolejności wierszy arr[0, 1]
i arr[1, 0]
.
Jeśli spróbujemy innego przykładu z trójwymiarową tablicą, w której każdy wymiar ma inny rozmiar, część przegrupowania stanie się bardziej przejrzysta.
In [2]: x = np.arange(24).reshape(2, 3, 4)
In [3]: x
Out[3]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [4]: x.transpose(1, 0, 2)
Out[4]:
array([[[ 0, 1, 2, 3],
[12, 13, 14, 15]],
[[ 4, 5, 6, 7],
[16, 17, 18, 19]],
[[ 8, 9, 10, 11],
[20, 21, 22, 23]]])
Tutaj są oryginalne rozmiary tablic (2, 3, 4)
. Zmieniliśmy 1 i 2 miejsce, więc staje się (3, 2, 4)
rozmiar. Jeśli przyjrzymy się bliżej, aby zobaczyć, jak dokładnie doszło do przegrupowania; wydaje się, że tablice liczb zmieniły się według określonego wzorca. Używając papierowej analogii @ RobertB , gdybyśmy wzięli 2 fragmenty liczb i zapisali każdy z nich na arkuszach, a następnie wzięliby jeden wiersz z każdego arkusza, aby skonstruować jeden wymiar tablicy, mielibyśmy teraz tablicę o wymiarach 3x2x4 , licząc od najbardziej zewnętrznej do najbardziej wewnętrznej warstwy.
[ 0, 1, 2, 3] \ [12, 13, 14, 15]
[ 4, 5, 6, 7] \ [16, 17, 18, 19]
[ 8, 9, 10, 11] \ [20, 21, 22, 23]
Dobrym pomysłem może być zabawa z tablicami o różnych rozmiarach i zmiana różnych osi, aby uzyskać lepszą intuicję, jak to działa.