У меня есть трехмерный ndarray в python, и я хотел бы поэтапно выполнить его по двум из трех полей.
Если говорить буквально, я, например, хотел бы перебратьвсе (x, y) пары, но хранят данные z вместе в виде массива.
Как псевдокод, выражение, за которым я, в конечном итоге, буду, будет примерно таким:
[ f(z) for z in all_xy_pairs(the_ndarray) if g(z) == True ]
Я подумал об использовании 'reshape' следующим образом
import numpy as np
# silly example
ii=np.arange(0,3*9,1).reshape(3,3,3)
[ z for z in ii.reshape(9,-1) if z[1]>10 ]
, но я быпредпочитаю итератор, которому я мог бы передать поля массива для перебора (в приведенном выше примере поля = [0,1]. В псевдокоде приведенный выше пример станет
[ z for z in iterate_over_margins(ii, margins=[0,1]) if z[1]>10 ]
, прежде чем я начну программироватьэто сам, разве нет такого итератора в numpy или в связанном пакете? Я проверил nditer
, но он не делает то, что мне нужно.