Od Numpy's tutorial, oś może być indeksowana za pomocą liczb całkowitych, np. 0
jest dla kolumny, 1
jest dla wiersza, ale nie rozumiem, dlaczego są one indeksowane w ten sposób? I jak mogę obliczyć indeks każdej osi podczas radzenia sobie z tablicą wielowymiarową?jak jest indeksowana oś w tablicy numpy?
Odpowiedz
Z definicji numer osi wymiaru jest indeksem tego wymiaru w tablicy shape
. Jest to również pozycja używana do uzyskania dostępu do tego wymiaru podczas indeksowania.
Na przykład, jeśli macierz dwuwymiarowa a
ma kształt (5,6), wówczas można uzyskać dostęp do a[0,0]
do a[4,5]
. Oś 0 jest zatem pierwszym wymiarem ("rzędy"), a oś 1 to drugi wymiar ("kolumny"). W wyższych wymiarach, gdzie "rząd" i "kolumna" przestają mieć sens, spróbuj myśleć o osiach w kategoriach kształtów i indeksów.
Jeśli wykonasz na przykład .sum(axis=n)
, wymiar n
zostanie zwinięty i usunięty, a wszystkie wartości w nowej macierzy będą równe sumie odpowiadających wartości zwiniętych. Na przykład, jeśli b
ma kształt (5,6,7,8)
, a robisz c = b.sum(axis=2)
, to oś 2 (wymiar o rozmiarze 7) jest zwinięta, a wynik ma kształt (5,6,8)
. Ponadto c[x,y,z]
jest równa sumie wszystkich elementów c[x,y,:,z]
.
Ogólnie, oś = 0, oznacza wszystkie komórki z pierwszym wymiarze różne dla każdej wartości 2 wymiary i 3. wymiaru itd
Na przykład tablica 2-wymiarowa dwa odpowiednie osie: pierwszy działa pionowo w dół w poprzek rzędów (oś 0), a drugi pracuje poziomo wzdłuż kolumn (oś 1)
na 3D, staje się skomplikowany, więc korzystać z wielu dla pętli
>>> x = np.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],
[24, 25, 26]]])
>>> x.shape #(3, 3, 3)
#axis = 0
>>> for j in range(0, x.shape[1]):
for k in range(0, x.shape[2]):
print("element = ", (j,k), " ", [ x[i,j,k] for i in range(0, x.shape[0]) ])
...
element = (0, 0) [0, 9, 18] #sum is 27
element = (0, 1) [1, 10, 19] #sum is 30
element = (0, 2) [2, 11, 20]
element = (1, 0) [3, 12, 21]
element = (1, 1) [4, 13, 22]
element = (1, 2) [5, 14, 23]
element = (2, 0) [6, 15, 24]
element = (2, 1) [7, 16, 25]
element = (2, 2) [8, 17, 26]
>>> x.sum(axis=0)
array([[27, 30, 33],
[36, 39, 42],
[45, 48, 51]])
#axis = 1
for i in range(0, x.shape[0]):
for k in range(0, x.shape[2]):
print("element = ", (i,k), " ", [ x[i,j,k] for j in range(0, x.shape[1]) ])
element = (0, 0) [0, 3, 6] #sum is 9
element = (0, 1) [1, 4, 7]
element = (0, 2) [2, 5, 8]
element = (1, 0) [9, 12, 15]
element = (1, 1) [10, 13, 16]
element = (1, 2) [11, 14, 17]
element = (2, 0) [18, 21, 24]
element = (2, 1) [19, 22, 25]
element = (2, 2) [20, 23, 26]
# for sum, axis is the first keyword, so we may omit it,
>>> x.sum(0), x.sum(1), x.sum(2)
(array([[27, 30, 33],
[36, 39, 42],
[45, 48, 51]]),
array([[ 9, 12, 15],
[36, 39, 42],
[63, 66, 69]]),
array([[ 3, 12, 21],
[30, 39, 48],
[57, 66, 75]]))
można uchwycić osi w ten sposób :
>>> a = np.array([[[1,2,3],[2,2,3]],[[2,4,5],[1,3,6]],[[1,2,4],[2,3,4]],[[1,2,4],[1,2,6]]])
array([[[1, 2, 3],
[2, 2, 3]],
[[2, 4, 5],
[1, 3, 6]],
[[1, 2, 4],
[2, 3, 4]],
[[1, 2, 4],
[1, 2, 6]]])
>>> a.shape
(4,2,3)
Utworzono tablicę o kształcie o różnych wartościach (4,2,3)
, dzięki czemu można wyraźnie powiedzieć strukturę. Inna oś oznacza inną "warstwę".
To znaczy, że axis = 0
indeksuje pierwszy wymiar kształtu (4,2,3)
. Odnosi się do tablic w pierwszym []
. Istnieją 4 elementy, więc jego kształtu 4:
array[[1, 2, 3],
[2, 2, 3]],
array[[2, 4, 5],
[1, 3, 6]],
array[[1, 2, 4],
[2, 3, 4]],
array[[1, 2, 4],
[1, 2, 6]]
axis = 1
wskaźnik drugi wymiar w kształcie (4,3,2)
. W każdej z warstw warstwy znajdują się 2 elementy: axis = 0
, e.c. W tablicy
array[[1, 2, 3],
[2, 2, 3]]
. dwa elementy:
array[1, 2, 3]
array[2, 2, 3]
i trzecia wartość kształt oznacza, że nie są 3 elementy każdego elementu macierzy warstwy: axis = 2
. e.c. Istnieją 3 elementy w array[1, 2, 3]
. To jest wyraźne.
Można również określić oś/wymiary z numeru []
na początku lub na końcu.W tym przypadku liczba to 3 ([[[
), więc możesz wybrać axis
z axis = 0
, axis = 1
i axis = 2
.
- 1. indeks elementu tablicy w numpy
- 2. Lista list w tablicy numpy
- 3. PHP Array.length dla dwuwymiarowej tablicy (oś Y)
- 4. Jak ukryć elementy tablicy rekordów w Numpy?
- 5. Liczba wierszy w tablicy numpy
- 6. Jak usunąć określone elementy w tablicy numpy
- 7. Jak wywołać element w tablicy numpy?
- 8. Zmiana kształtu tablicy w NumPy
- 9. scipy interpolację numpy tablicy
- 10. O (1) indeksowana liczba całkowita w Pythonie
- 11. Zawijanie tablicy numpy w pytonie
- 12. Prepend element tablicy numpy
- 13. Indeksuj środek tablicy numpy?
- 14. indeksy okrągłych numpy tablicy
- 15. Cython/numpy Typ tablicy
- 16. Python numpy tablicy zastępując
- 17. Iteracja nad numpy tablicy
- 18. Dopasowanie warunkowe tablicy Numpy
- 19. evalution porównania tablicy numpy
- 20. wielkość NumPy tablicy
- 21. Konwersja listę numpy tablicy
- 22. Jak przypisać tablicę 1D numpy do tablicy 2D numpy?
- 23. Jak przyspieszyć iterację na części tablicy numpy
- 24. Tworzenie słownika z tablicy numpy
- 25. wtykowy filtr na numpy tablicy
- 26. numpy: Jak szybko przekonwertować typ tablicy
- 27. Uzyskanie przeciwległej przekątnej tablicy numpy
- 28. Jak wyciąć każdy element z tablicy numpy?
- 29. Drukowanie PEŁNEJ zawartości tablicy numpy
- 30. Numpy jak iterować po kolumnach tablicy?
'0' powinien odnosić się do wierszy, a' 1' powinien odnosić się do kolumn. Podejrzewam, że myślisz o np. '.sum (axis = 0)', która sumuje * wzdłuż * wierszy (tworząc sumy kolumn). – nneonneo
@nneonneo, tak to mam na myśli, więc skąd mam znać indeks każdej osi? – Alcott