Esiste una funzione per ottenere un iteratore su una dimensione arbitraria di un array numpy?Iterating over arbitrary dimension of numpy.array
iterare sulla prima dimensione è facile ...
In [63]: c = numpy.arange(24).reshape(2,3,4)
In [64]: for r in c :
....: print r
....:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
Ma l'iterazione di altre dimensioni è più difficile. Per esempio, l'ultima dimensione:
In [73]: for r in c.swapaxes(2,0).swapaxes(1,2) :
....: print r
....:
[[ 0 4 8]
[12 16 20]]
[[ 1 5 9]
[13 17 21]]
[[ 2 6 10]
[14 18 22]]
[[ 3 7 11]
[15 19 23]]
Sto facendo un generatore a fare da solo, ma sono sorpreso che non ci sia una funzione denominata qualcosa come numpy.ndarray.iterdim (asse = 0) a fallo automaticamente.
La sintassi NumPy standard 'a [..., i]' sarebbe più leggera e rimuoverebbe la necessità di 'leading_indices'. – EOL
@EOL ma funzionerebbe solo per l'ultimo asse, con leading_indices suo più generale ... – lukas
Buon punto @lukas: la domanda iniziale in effetti menziona l'iterazione "su una dimensione arbitraria", mentre pensavo di integrare l'ultima dimensione. – EOL