Da Numpy's tutorial, l'asse può essere indicizzato con numeri interi, come 0
è per colonna, 1
è per riga, ma non capisco perché sono indicizzati in questo modo? E come faccio a capire l'indice di ciascun asse quando si affronta l'array multidimensionale?come viene indicizzato l'asse nell'array di numpy?
risposta
Per definizione, il numero dell'asse della dimensione è l'indice di quella dimensione all'interno dell'array shape
. È anche la posizione utilizzata per accedere a quella dimensione durante l'indicizzazione.
Ad esempio, se un array 2D a
ha forma (5,6), è possibile accedere a a[0,0]
fino a a[4,5]
. L'asse 0 è quindi la prima dimensione (le "righe") e l'asse 1 è la seconda dimensione (le "colonne"). Nelle dimensioni superiori, dove "riga" e "colonna" cessano di avere un senso, prova a pensare agli assi in termini di forme e indici coinvolti.
Se si esegue .sum(axis=n)
, ad esempio, la dimensione n
viene compressa ed eliminata, con tutti i valori nella nuova matrice pari alla somma dei valori compressi corrispondenti. Ad esempio, seha la forma (5,6,7,8)
e lo si fa, l'asse 2 (dimensione con dimensione 7) viene compresso e il risultato ha forma (5,6,8)
. Inoltre, c[x,y,z]
equivale alla somma di tutti gli elementi c[x,y,:,z]
.
In generale, asse = 0, significa tutte le celle con prima dimensione variano con ciascun valore di 2 ° dimensione e 3a dimensione e così via
Ad esempio, un array a 2 dimensioni ha due assi corrispondenti: la prima esecuzione verticalmente verso il basso attraverso le righe (asse 0), e la seconda corsa orizzontale lungo le colonne (asse 1)
per 3D, diventa complessa, quindi, impiego multiplo in cicli
>>> 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]]))
è possibile afferrare asse in questo modo :
>>> 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)
Ho creato un array di una forma con valori diversi (4,2,3)
in modo da poter distinguere chiaramente la struttura. Asse diverso significa diverso 'strato'.
Cioè, axis = 0
indice la prima dimensione della forma (4,2,3)
. Si riferisce agli array nel primo []
. Ci sono 4 elementi in esso, e la sua forma è 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
indice la seconda dimensione in forma (4,3,2)
. Ci sono 2 elementi in ogni matrice del livello: axis = 0
, e.c. Nell'array di
array[[1, 2, 3],
[2, 2, 3]]
. I due elementi sono:
array[1, 2, 3]
array[2, 2, 3]
Il terzo valore forma significa che ci sono 3 elementi in ogni elemento dell'array di strato: axis = 2
. E.C. Ci sono 3 elementi in array[1, 2, 3]
. Questo è esplicito.
E inoltre, è possibile indicare l'asse/le dimensioni dal numero di []
all'inizio o alla fine.In questo caso, il numero è 3 ([[[
), quindi è possibile scegliere axis
da axis = 0
, axis = 1
e axis = 2
.
- 1. fusione array indicizzato in Python
- 2. Is COUNT (*) indicizzato?
- 3. Dominio di Azure indicizzato da google
- 4. javascript array associative E indicizzato?
- 5. BIT: utilizzando un albero indicizzato binario?
- 6. Sfinge: articolo indicizzato con riferimento incrociato
- 7. Sia hash che elenco indicizzato o matrice?
- 8. intero indicizzato con una stringa in C++
- 9. django haystack SearchField con indicizzato False
- 10. Deserializzazione JSON con array indicizzato in C#
- 11. Scoprire se/quale libreria BLAS viene utilizzata da Numpy
- 12. Come utilizzare i join in Db indicizzato HTML5?
- 13. Ottenere un hash indicizzato come risultato da activerecord
- 14. Query MongoDB su campo indicizzato molto lento
- 15. Mysql: il campo univoco deve essere indicizzato?
- 16. Ricerca con testo completo indicizzato in Eclipse?
- 17. Conversione dell'array indicizzato nell'array normale o semplice
- 18. Elemento array di accesso indicizzato da stringa numerica
- 19. Mostra il permesso di un file indicizzato in git
- 20. indicizzato variava algoritmo di ricerca per indirizzi IP
- 21. Il paging deve essere indicizzato a zero all'interno di un'API?
- 22. Come posso aggiornare Numpy?
- 23. matrice Numpy non può indicizzare all'interno di un singolo []
- 24. Operazioni di blocco in Numpy
- 25. Come assegnare un array numpy 1D all'array numpy 2D?
- 26. Numpy come iterare su colonne di array?
- 27. Come accedere agli elementi di numpy ndarray?
- 28. Come creare una matrice di record numpy?
- 29. Installazione di numpy come dipendenza con setuptools
- 30. Si può fare in modo che l'indice Apache Solr sia transazionale in modo coerente con il DB che viene indicizzato?
'0' deve fare riferimento alle righe e' 1' deve fare riferimento alle colonne. Sospetto che stiate pensando ad es. '.sum (axis = 0)' che somma * lungo * le righe (producendo i totali delle colonne). – nneonneo
@nneonneo, sì è quello che intendo, quindi come faccio a sapere l'indice di ciascun asse? – Alcott