Interpolación / submuestreo de datos 3D en python sin VTK

Lo que quiero hacer es bastante simple, pero hasta ahora no he encontrado un enfoque directo:

Tengo una cuadrícula rectilínea 3D con valores flotantes (por lo tanto, 3 ejes de coordenadas -1D matrices numpy- para los centros de las celdas de la cuadrícula y una matriz numpy 3D con la forma correspondiente con un valor para cada centro de celda) y quiero interpolar (o puede llamarla submuestra) esta matriz completa a una matriz submuestreada (por ejemplo, factor de tamaño de 5) con interpolación lineal. Todos los enfoques que he visto hasta ahora implican interpolación en 2D y luego en 1D o trucos VTK que Id no prefiere usar (portabilidad).

¿Podría alguien sugerir un enfoque que sería equivalente a tomar 5x5x5 celdas al mismo tiempo en la matriz 3D, promediando y devolviendo una matriz 5 veces más pequeña en cada dirección?

Gracias de antemano por cualquier sugerencia

EDITAR: Así es como se ven los datos, 'd' es una matriz 3D que representa una cuadrícula 3D de celdas. Cada celda tiene un valor flotante escalar (presión en mi caso) y 'x', 'y' y 'z' son tres matrices 1D que contienen las coordenadas espaciales de las celdas de cada celda (vea las formas y cómo la matriz 'x' parece)

In [42]: x.shape
Out[42]: (181L,)

In [43]: y.shape
Out[43]: (181L,)

In [44]: z.shape
Out[44]: (421L,)

In [45]: d.shape
Out[45]: (181L, 181L, 421L)

In [46]: x
Out[46]: 
array([-0.410607  , -0.3927568 , -0.37780656, -0.36527296, -0.35475321,
       -0.34591168, -0.33846866, -0.33219107, -0.32688467, -0.3223876 ,
        ...
        0.34591168,  0.35475321,  0.36527296,  0.37780656,  0.3927568 ,
        0.410607  ])

Lo que quiero hacer es crear una matriz 3D con, digamos, una forma de 90x90x210 (aproximadamente una reducción de tamaño por un factor de 2) al sub-muestrear primero las coordenadas de los ejes en las matrices con las dimensiones anteriores y luego "interpolar" los datos 3D para que formación. No estoy seguro si "interpolar" es el término correcto sin embargo. Downsampling? Averaging? Aquí hay una porción 2D de los datos:

Respuestas a la pregunta(2)

Su respuesta a la pregunta