Есть ли функция для получения итератора по произвольной размерности массива numpy?Итерация по произвольной размерности numpy.array
Итерация по первому измерению легко ...
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]]
Но итерацию по сравнению с другими размерами сложнее. Например, последнее измерение:
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]]
Я делаю генератор, чтобы сделать это сам, но я удивлен, что это не функция с именем что-то вроде numpy.ndarray.iterdim (ось = 0) в сделайте это автоматически.
Стандартный синтаксис NumPy 'a [..., i]' будет легче и устранит необходимость в 'leading_indices'. – EOL
@EOL, но это будет работать только для последней оси, а ведущие - более общие ... – lukas
Хорошая точка @lukas: исходный вопрос действительно упоминает итерацию «над произвольным измерением», а я имел в виду интеграцию по последнему измерению. – EOL