¿Hay alguna función para obtener un iterador sobre una dimensión arbitraria de una matriz numpy?Iteración sobre la dimensión arbitraria de numpy.array
iteración en la primera dimensión es fácil ...
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]]
Pero iteración en otras dimensiones es más difícil. Por ejemplo, la última dimensión:
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]]
estoy haciendo un generador de hacer esto por mí mismo, pero me sorprende que no hay una función llamada algo así como numpy.ndarray.iterdim (eje = 0) a haz esto automáticamente
La sintaxis NumPy estándar 'a [..., i]' sería más ligera y eliminaría la necesidad de 'leading_indices'. – EOL
@EOL pero eso funcionaría solo para el último eje, con leading_indices es más general ... – lukas
Buen punto @lukas: la pregunta inicial de hecho menciona la iteración "sobre una dimensión arbitraria", mientras que yo tenía en mente la integración sobre la última dimensión. – EOL