Quais são as maneiras eficientes de fazer loop sobre vetores ao longo de um eixo especificado no numpy ndarray?

Estou processando dados fazendo um loop sobre vetores ao longo de um eixo (poderia ser qualquer eixo) de numpy ndarray (poderia ter qualquer dimensão).

Não trabalhei diretamente no array porque os dados não são perfeitos. Requer controle de qualidade em cada vetor. Se não for bom, o vetor será preenchido por zeros (ou nan) e não terá um processamento real.

eu encontreieste Q semelhante, mas meu problema é muito mais difícil porque

ndim é arbitrário.

Para uma matriz 3D, posso pegar vetores juntoaxis 1 como isso

 x = np.arange(24).reshape(2,3,4)
 for i in range(x.shape[0]):
     for k in range(x.shape[2]):
         process(x[i,:,k])

mas sendim e o tomadoaxis não são fixos, como tirar vetores?

O eixo para obter vetores é arbitrário.

Uma maneira possível de considerar é

 y = x.swapaxes(ax,-1)
 # loop over vectors along last axis
 for i in np.ndindex(y.shape[:-1]):
     process(y[i+(slice(None),)])
 # then swap back
 z = y.swapaxes(ax,-1)

Mas estou duvidando da eficiência desse método.

questionAnswers(2)

yourAnswerToTheQuestion