¿Cuáles son las formas eficientes de recorrer los vectores a lo largo de un eje específico en ndarray numpy?

Estoy procesando datos girando sobre vectores a lo largo de un eje (podría ser cualquier eje) de ndarray numpy (podría ser de cualquier dimensión).

No trabajé en la matriz directamente porque los datos no son perfectos. Requiere control de calidad en cada vector. Si no es bueno, el vector se rellenará con ceros (o nan) y no tendrá un procesamiento real.

encontréesta Q similar pero mi problema es mucho más difícil porque

ndim es arbitrario

Para una matriz 3D, puedo tomar vectores a lo largoaxis 1 Me gusta esto

 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])

pero sindim y la tomadaaxis no son fijos, ¿cómo tomar vectores?

El eje para tomar vectores es arbitrario.

Una posible forma que estoy considerando es

 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)

Pero estoy dudando de la eficacia de este método.

Respuestas a la pregunta(2)

Su respuesta a la pregunta