es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Iterando una función sobre un arreglo.

Tengo una función que toma una matriz tridimensional y enmascara ciertos elementos dentro de la matriz basándose en condiciones específicas. Ver abajo:

función para enmascarar una matriz

def masc(arr,z):
        return(np.ma.masked_where((arr[:,:,2] <= z+0.05)*(arr[:,:,2] >= z-0.05), arr[:,:,2])) 

Arr es una matriz 3D y z es un valor único.

Ahora quiero iterar esto para múltiples valores de Z. Aquí hay un ejemplo con 2 valores de z:

maskedarray11 = masc(xyz,z1)
maskedarray12 = masc(xyz,z2)

masked1 = maskedarray11.mask + maskedarray12.mask
maskedarray1 = np.ma.array(xyz[:,:,2],mask=masked_1)

El masked_array1 me da exactamente lo que estoy buscando.

He empezado a escribir un bucle for para iterar esto sobre una matriz 1D de valores Z:

mask1 = xyz[:,:,2]
for i in range(Zalldim):
    mask1 += (masc(xyz,Z_all[i]).mask)

maskedarray1 = np.ma.array(xyz[:,:,2], mask = mask1)

Z_all es una matriz de 7 valores z únicos. Este código no funciona (toda la matriz termina enmascarada), pero siento que estoy muy cerca. ¿Alguien ve si estoy haciendo algo mal?

Tags:  , , , ,

Answer

Comments are closed.